From 0fbeaaf6237b62d5220da0418d05cae4487f29bf Mon Sep 17 00:00:00 2001 From: Fuwn Date: Mon, 12 Feb 2024 08:55:11 -0800 Subject: feat(settings): settings sync --- src/lib/Database/userConfiguration.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/lib/Database') diff --git a/src/lib/Database/userConfiguration.ts b/src/lib/Database/userConfiguration.ts index 5e2f0c96..1b6f152e 100644 --- a/src/lib/Database/userConfiguration.ts +++ b/src/lib/Database/userConfiguration.ts @@ -2,11 +2,16 @@ import supabase from './supabase'; interface UserConfiguration { user_id: number; - configuration: any; + configuration: JSON; created_at: string; updated_at: string; } +interface NewUserConfiguration { + configuration: JSON; + updated_at?: string; +} + export const getUserConfiguration = async (userId: number) => { const { data, error } = await supabase .from('user_configuration') @@ -18,12 +23,18 @@ export const getUserConfiguration = async (userId: number) => { return data[0] as UserConfiguration; }; -export const setUserConfiguration = async (userId: number, configuration: UserConfiguration) => { +export const setUserConfiguration = async (userId: number, configuration: NewUserConfiguration) => { + if (!configuration.updated_at) configuration.updated_at = new Date().toISOString(); + const { data, error } = await supabase .from('user_configuration') - .upsert({ user_id: userId, configuration }); + .upsert( + { user_id: userId, configuration: configuration.configuration }, + { onConflict: 'user_id' } + ) + .select(); if (error || !data || (data as []).length === 0) return null; - return data[0] as UserConfiguration; + return data[0].configuration as UserConfiguration; }; -- cgit v1.2.3