import { databaseTimeToDate } from '$lib/Utility/time'; import { sql } from '@vercel/postgres'; export interface Badge { post?: string; image?: string; description?: string; id?: number; time?: string; category?: string; } export const getUserBadges = async (userId: number): Promise => { return (await sql`SELECT * FROM user_badges WHERE user_id = ${userId};`).rows.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 sql`INSERT INTO user_badges (user_id, post, image, description, time, category) VALUES (${userId}, ${post}, ${image}, ${ description || null }, ${time}, ${category || null});` ).rows; } else { ( await sql`INSERT INTO user_badges (user_id, post, image, description, category) VALUES (${userId}, ${post}, ${image}, ${ description || null }, ${category || null});` ).rows; } }; export const removeUserBadge = async (userId: number, id: number) => { if (!isNaN(id)) await sql`DELETE FROM user_badges WHERE user_id = ${userId} AND id = ${id};`; }; export const updateUserBadge = async (userId: number, id: number, badge: Badge) => { if (badge.post === undefined || badge.image === undefined || badge.description === undefined) return; await sql` UPDATE user_badges SET post = ${badge.post || null}, image = ${ badge.image || null }, description = ${badge.description || null}, category = ${ badge.category || null } WHERE id = ${id} AND user_id = ${userId};`; };