import { databaseTimeToDate } from '$lib/Utility/time'; import supabase from './supabase'; export interface Badge { post?: string; image?: string; description?: string; id?: number; time?: string; category?: string; } export const getUserBadges = async (userId: number): Promise => { const { data, error } = await supabase.from('user_badges').select('*').eq('user_id', userId); if (error) return []; return data.sort((a, b) => databaseTimeToDate((a as Badge).time ?? '').getTime() > databaseTimeToDate((b as Badge).time ?? '').getTime() ? -1 : 1 ) as Badge[]; }; export const addUserBadge = async (userId: number, badge: Badge) => { const { post, image, description, time, category } = badge; if (post === undefined || image === undefined) return; if (time) { await supabase .from('user_badges') .insert({ user_id: userId, post, image, description, time, category }); } else { await supabase .from('user_badges') .insert({ user_id: userId, post, image, description, category }); } }; export const removeUserBadge = async (userId: number, id: number) => { if (!isNaN(id)) await supabase.from('user_badges').delete().eq('id', id).eq('user_id', userId); }; export const updateUserBadge = async (userId: number, id: number, badge: Badge) => { if (badge.post === undefined || badge.image === undefined) return; await supabase .from('user_badges') .update({ post: badge.post, image: badge.image, description: badge.description, category: badge.category, time: badge.time }) .eq('id', id) .eq('user_id', userId); }; export const renameCategory = async (userId: number, oldName: string, newName: string) => await supabase .from('user_badges') .update({ category: newName }) .eq('category', oldName) .eq('user_id', userId); export const removeAllUserBadges = async (userId: number) => await supabase.from('user_badges').delete().eq('user_id', userId);