Files
searcher/server/app/user-preferences.ts
T
2026-06-06 00:49:07 +08:00

65 lines
1.7 KiB
TypeScript

import { createSupabaseServiceRoleClient } from "@/lib/supabase/service-role";
import type { AppUserSettings } from "@/types/app/user";
export async function getUserSettings(userId: string) {
const supabase = createSupabaseServiceRoleClient();
const { data, error } = await supabase
.from("wg_user_settings")
.select("user_id,preferences,download_preferences,updated_at")
.eq("user_id", userId)
.maybeSingle<AppUserSettings>();
if (error) {
throw error;
}
if (data) {
return data;
}
const { data: created, error: createError } = await supabase
.from("wg_user_settings")
.insert({
user_id: userId,
preferences: {},
download_preferences: {},
})
.select("user_id,preferences,download_preferences,updated_at")
.single<AppUserSettings>();
if (createError) {
throw createError;
}
return created;
}
export async function updateUserSettings({
downloadPreferences,
preferences,
userId,
}: {
downloadPreferences?: Record<string, unknown>;
preferences?: Record<string, unknown>;
userId: string;
}) {
const current = await getUserSettings(userId);
const supabase = createSupabaseServiceRoleClient();
const { data, error } = await supabase
.from("wg_user_settings")
.update({
preferences: preferences ?? current.preferences,
download_preferences:
downloadPreferences ?? current.download_preferences,
})
.eq("user_id", userId)
.select("user_id,preferences,download_preferences,updated_at")
.single<AppUserSettings>();
if (error) {
throw error;
}
return data;
}