aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Database
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Database')
-rw-r--r--src/lib/Database/badges.ts51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts
new file mode 100644
index 00000000..e02fd91b
--- /dev/null
+++ b/src/lib/Database/badges.ts
@@ -0,0 +1,51 @@
+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.toString(), post, image, description || null);
+};
+
+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
+ });
+};