aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Database/badges.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-10 00:50:26 -0800
committerFuwn <[email protected]>2024-02-10 00:50:26 -0800
commitec97cd3e3a897f6a1d56a00579597d895f56e567 (patch)
tree2905dc00daf20e04e691e97c16700198ffee3d4e /src/lib/Database/badges.ts
parentfeat(badges): add 1 second delay between error fetches (diff)
downloaddue.moe-ec97cd3e3a897f6a1d56a00579597d895f56e567.tar.xz
due.moe-ec97cd3e3a897f6a1d56a00579597d895f56e567.zip
feat(badges): switch to supabase orm
Diffstat (limited to 'src/lib/Database/badges.ts')
-rw-r--r--src/lib/Database/badges.ts61
1 files changed, 36 insertions, 25 deletions
diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts
index 6df9fd8e..afed09a4 100644
--- a/src/lib/Database/badges.ts
+++ b/src/lib/Database/badges.ts
@@ -1,5 +1,5 @@
import { databaseTimeToDate } from '$lib/Utility/time';
-import { sql } from '@vercel/postgres';
+import { createClient } from '@supabase/supabase-js';
export interface Badge {
post?: string;
@@ -10,8 +10,17 @@ export interface Badge {
category?: string;
}
+const supabase = createClient(
+ process.env.SUPABASE_URL as string,
+ process.env.SUPABASE_ANON_KEY as string
+);
+
export const getUserBadges = async (userId: number): Promise<Badge[]> => {
- return (await sql`SELECT * FROM user_badges WHERE user_id = ${userId};`).rows.sort((a, b) =>
+ 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
@@ -25,39 +34,41 @@ export const addUserBadge = async (userId: number, badge: 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;
+ await supabase
+ .from('user_badges')
+ .insert({ user_id: userId, post, image, description, time, category });
} else {
- (
- await sql`INSERT INTO user_badges (user_id, post, image, description, category) VALUES (${userId}, ${post}, ${image}, ${
- description || null
- }, ${category || null});`
- ).rows;
+ 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 sql`DELETE FROM user_badges WHERE user_id = ${userId} AND id = ${id};`;
+ 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 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};`;
+ await supabase
+ .from('user_badges')
+ .update({
+ post: badge.post,
+ image: badge.image,
+ description: badge.description,
+ category: badge.category
+ })
+ .eq('id', id)
+ .eq('user_id', userId);
};
-export const renameCategory = async (userId: number, oldName: string, newName: string) => {
- await sql`UPDATE user_badges SET category = ${newName} WHERE category = ${oldName} AND 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 sql`DELETE FROM user_badges WHERE user_id = ${userId};`;
-};
+export const removeAllUserBadges = async (userId: number) =>
+ await supabase.from('user_badges').delete().eq('user_id', userId);