aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbun.lockbbin169570 -> 168049 bytes
-rw-r--r--package.json2
-rw-r--r--src/lib/Database/badges.ts61
3 files changed, 37 insertions, 26 deletions
diff --git a/bun.lockb b/bun.lockb
index c6e0a4d6..fbe34d6e 100755
--- a/bun.lockb
+++ b/bun.lockb
Binary files differ
diff --git a/package.json b/package.json
index a7287a13..04402a19 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,7 @@
},
"type": "module",
"dependencies": {
- "@vercel/postgres": "^0.5.1",
+ "@supabase/supabase-js": "^2.39.3",
"@vercel/speed-insights": "^1.0.9",
"dexie": "^4.0.1-alpha.25",
"jsdom": "^23.0.1",
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);