diff options
| author | Fuwn <[email protected]> | 2023-10-24 17:13:14 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-24 17:13:14 -0700 |
| commit | 418a296dc5e7a95be30226d5f21fb4e8b15104a0 (patch) | |
| tree | fba1815b724d6a266084ec0e3cabb6e9a0e22500 /src/lib | |
| parent | fix(feeds): html encode title (diff) | |
| parent | feat: badge wall (diff) | |
| download | due.moe-418a296dc5e7a95be30226d5f21fb4e8b15104a0.tar.xz due.moe-418a296dc5e7a95be30226d5f21fb4e8b15104a0.zip | |
merge: branch badges into main
Diffstat (limited to 'src/lib')
| -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); + } +}; |