diff options
| author | Fuwn <[email protected]> | 2024-01-03 05:36:06 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-03 05:36:06 -0800 |
| commit | 076299e85b4e63acb7fdf32f12770dc04b88652e (patch) | |
| tree | feef3a510083212224ebc3c1db3eb79116311ebd /src | |
| parent | deps(bun): update for 0.1.15 (diff) | |
| download | due.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.tar.xz due.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.zip | |
ci: move to vercel
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Database/badges.ts | 87 | ||||
| -rw-r--r-- | src/routes/api/badges/+server.ts | 12 |
2 files changed, 35 insertions, 64 deletions
diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts index 9819e10e..aaf08d8f 100644 --- a/src/lib/Database/badges.ts +++ b/src/lib/Database/badges.ts @@ -1,5 +1,5 @@ import { databaseTimeToDate } from '$lib/Utility/time'; -import { Database } from 'bun:sqlite'; +import { sql } from '@vercel/postgres'; export interface Badge { post?: string; @@ -10,78 +10,47 @@ export interface Badge { category?: string; } -const database = new Database('./data/due_moe.sqlite3', { - create: true -}); - -database - .query( - `CREATE TABLE IF NOT EXISTS user_badges ( - id INTEGER PRIMARY KEY, - user_id INTEGER NOT NULL, - post TEXT(1000) NOT NULL, - image TEXT(1000) NOT NULL, - description TEXT(1000) DEFAULT NULL, - category TEXT(1000) DEFAULT NULL, - time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -)` - ) - .run(); - -export const getUserBadges = (userId: number): Badge[] => { - return database - .query('SELECT * FROM user_badges WHERE user_id = $userId') - .all({ $userId: String(userId) }) - .sort((a, b) => - databaseTimeToDate((a as Badge).time ?? '').getTime() > - databaseTimeToDate((b as Badge).time ?? '').getTime() - ? -1 - : 1 - ) as Badge[]; +export const getUserBadges = async (userId: number): Promise<Badge[]> => { + 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 = (userId: number, badge: Badge) => { +export const addUserBadge = async (userId: number, badge: Badge) => { const { post, image, description, time, category } = badge; if (post === undefined || image === undefined) return; if (time) { - database - .query( - `INSERT INTO user_badges (user_id, post, image, description, time, category) VALUES (?1, ?2, ?3, ?4, ?5, ?6);` - ) - .run(userId.toString(), post, image, description || null, time, category || null); + ( + await sql`INSERT INTO user_badges (user_id, post, image, description, time, category) VALUES (${userId}, ${post}, ${image}, ${ + description || null + }, ${time}, ${category || null});` + ).rows; } else { - database - .query( - `INSERT INTO user_badges (user_id, post, image, description, category) VALUES (?1, ?2, ?3, ?4, ?5);` - ) - .run(userId.toString(), post, image, description || null, category || null); + ( + await sql`INSERT INTO user_badges (user_id, post, image, description, category) VALUES (${userId}, ${post}, ${image}, ${ + description || null + }, ${category || null});` + ).rows; } }; -export const removeUserBadge = (userId: number, id: number) => { - if (!isNaN(id)) - database.query('DELETE FROM user_badges WHERE user_id = $userId AND id = $id').run({ - $userId: userId, - $id: id - }); +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 = (userId: number, id: number, badge: Badge) => { +export const updateUserBadge = async (userId: number, id: number, badge: Badge) => { if (badge.post === undefined || badge.image === undefined || badge.description === undefined) return; - database - .query( - 'UPDATE user_badges SET post = ?1, image = ?2, description = ?3, category = ?6 WHERE id = ?4 AND user_id = ?5' - ) - .run( - badge.post || null, - badge.image || null, - badge.description || null, - id, - userId, - badge.category || null - ); + 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};`; }; diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 63e6ace4..922ba359 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -4,7 +4,7 @@ import { getUserBadges } from '$lib/Database/badges'; import { addUserBadge } from '$lib/Database/badges'; export const GET = async ({ url }) => { - return Response.json(getUserBadges(Number(url.searchParams.get('id') || 0))); + return Response.json(await getUserBadges(Number(url.searchParams.get('id') || 0))); }; export const DELETE = async ({ url, cookies }) => { @@ -22,7 +22,7 @@ export const DELETE = async ({ url, cookies }) => { refreshToken: user['refresh_token'] }); - removeUserBadge(identity.id, Number(url.searchParams.get('id'))); + await removeUserBadge(identity.id, Number(url.searchParams.get('id'))); return Response.json({}); }; @@ -43,9 +43,11 @@ export const PUT = async ({ cookies, url }) => { }); if ( - getUserBadges(identity.id).find((badge) => badge.id === Number(url.searchParams.get('update'))) + (await getUserBadges(identity.id)).find( + (badge) => badge.id === Number(url.searchParams.get('update')) + ) ) { - updateUserBadge(identity.id, Number(url.searchParams.get('update')), { + await updateUserBadge(identity.id, Number(url.searchParams.get('update')), { post: url.searchParams.get('post') || undefined, image: url.searchParams.get('image') || undefined, description: url.searchParams.get('description') || undefined, @@ -53,7 +55,7 @@ export const PUT = async ({ cookies, url }) => { category: url.searchParams.get('category') || undefined }); } else { - addUserBadge(identity.id, { + await addUserBadge(identity.id, { post: url.searchParams.get('post') || undefined, image: url.searchParams.get('image') || undefined, description: url.searchParams.get('description') || undefined, |