aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-10-26 15:41:57 -0700
committerFuwn <[email protected]>2023-10-26 15:41:57 -0700
commit9bac3b6b6a9103841a3456436c65af66549a83da (patch)
tree4273c0ebe5567109daf8b7a4d2c92d51694677cf /src/lib
parentfix(feeds): html encode title (diff)
parentfeat: move back to bun (diff)
downloaddue.moe-9bac3b6b6a9103841a3456436c65af66549a83da.tar.xz
due.moe-9bac3b6b6a9103841a3456436c65af66549a83da.zip
merge: branch 'badges'
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/AniList/user.ts5
-rw-r--r--src/lib/userBadgesDatabase.ts54
2 files changed, 58 insertions, 1 deletions
diff --git a/src/lib/AniList/user.ts b/src/lib/AniList/user.ts
index dd9995fd..fdc98a58 100644
--- a/src/lib/AniList/user.ts
+++ b/src/lib/AniList/user.ts
@@ -15,6 +15,9 @@ export interface User {
volumesRead: number;
};
};
+ avatar: {
+ large: string;
+ };
}
export const user = async (username: string): Promise<User> => {
@@ -28,7 +31,7 @@ export const user = async (username: string): Promise<User> => {
},
body: JSON.stringify({
query: `{ User(name: "${username}") {
- name id statistics {
+ name id avatar { large } statistics {
anime {
count meanScore minutesWatched episodesWatched
}
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
+ });
+ }
+};