aboutsummaryrefslogtreecommitdiff
path: root/src/lib/userBadgesDatabase.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-10-24 17:12:54 -0700
committerFuwn <[email protected]>2023-10-24 17:12:54 -0700
commit861c03b85160972431ca9b262345d15edecf9acb (patch)
tree48bf0a18cebf3c8fb20b774adac7f9c85373a3a2 /src/lib/userBadgesDatabase.ts
parentfix(settings): round down chapters hint (diff)
downloaddue.moe-861c03b85160972431ca9b262345d15edecf9acb.tar.xz
due.moe-861c03b85160972431ca9b262345d15edecf9acb.zip
feat: badge wall
Diffstat (limited to 'src/lib/userBadgesDatabase.ts')
-rw-r--r--src/lib/userBadgesDatabase.ts57
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);
+ }
+};