diff options
| author | Fuwn <[email protected]> | 2023-10-24 17:12:54 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-24 17:12:54 -0700 |
| commit | 861c03b85160972431ca9b262345d15edecf9acb (patch) | |
| tree | 48bf0a18cebf3c8fb20b774adac7f9c85373a3a2 /src/lib/userBadgesDatabase.ts | |
| parent | fix(settings): round down chapters hint (diff) | |
| download | due.moe-861c03b85160972431ca9b262345d15edecf9acb.tar.xz due.moe-861c03b85160972431ca9b262345d15edecf9acb.zip | |
feat: badge wall
Diffstat (limited to 'src/lib/userBadgesDatabase.ts')
| -rw-r--r-- | src/lib/userBadgesDatabase.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/lib/userBadgesDatabase.ts b/src/lib/userBadgesDatabase.ts new file mode 100644 index 00000000..c129770e --- /dev/null +++ b/src/lib/userBadgesDatabase.ts @@ -0,0 +1,57 @@ +import { dev } from '$app/environment'; +import Database from 'better-sqlite3'; + +export interface Badge { + post: string; + image: string; + description?: string; + id?: number; +} + +const database = new Database('./due_moe.sqlite3', { + verbose: dev ? console.log : undefined +}); + +database.exec(`create table if not exists user_badges ( + id integer primary key, + user_id integer not null, + post text not null, + image text not null, + description text default null, + time timestamp default current_timestamp +)`); + +export const getUserBadges = (userId: number): Badge[] => { + return database + .prepare('select * from user_badges where user_id = ?') + .all(String(userId)) as Badge[]; +}; + +export const addUserBadge = (userId: number, badge: Badge) => { + const { post, image, description } = badge; + const statement = database.prepare(` + insert into user_badges (user_id, post, image, description) values (?, ?, ?, ?) + `); + + statement.run(userId, post, image, description); +}; + +export const addUserBadges = (userId: number, badges: Badge[]) => { + const statement = database.prepare(` + insert into user_badges (user_id, post, image, description) values (?, ?, ?, ?) + `); + + for (const badge of badges) { + const { post, image, description } = badge; + + statement.run(userId, post, image, description); + } +}; + +export const removeUserBadge = (userId: number, id: number) => { + if (!isNaN(id)) { + const statement = database.prepare('delete from user_badges where user_id = ? and id = ?'); + + statement.run(userId, id); + } +}; |