diff options
| author | Fuwn <[email protected]> | 2023-10-26 15:41:57 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-26 15:41:57 -0700 |
| commit | 9bac3b6b6a9103841a3456436c65af66549a83da (patch) | |
| tree | 4273c0ebe5567109daf8b7a4d2c92d51694677cf /src/lib/userBadgesDatabase.ts | |
| parent | fix(feeds): html encode title (diff) | |
| parent | feat: move back to bun (diff) | |
| download | due.moe-9bac3b6b6a9103841a3456436c65af66549a83da.tar.xz due.moe-9bac3b6b6a9103841a3456436c65af66549a83da.zip | |
merge: branch 'badges'
Diffstat (limited to 'src/lib/userBadgesDatabase.ts')
| -rw-r--r-- | src/lib/userBadgesDatabase.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/lib/userBadgesDatabase.ts b/src/lib/userBadgesDatabase.ts new file mode 100644 index 00000000..8cf40d5b --- /dev/null +++ b/src/lib/userBadgesDatabase.ts @@ -0,0 +1,54 @@ +import { Database } from 'bun:sqlite'; + +export interface Badge { + post?: string; + image?: string; + description?: string; + id?: number; +} + +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, + 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) }) as Badge[]; +}; + +export const addUserBadge = (userId: number, badge: Badge) => { + const { post, image, description } = badge; + + if (post === undefined || image === undefined) { + return; + } + + const statement = database.query( + `INSERT INTO user_badges (user_id, post, image, description) VALUES (?1, ?2, ?3, ?4);` + ); + + statement.run([userId, post, image, description]); +}; + +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 + }); + } +}; |