aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-30 00:40:43 -0800
committerFuwn <[email protected]>2023-12-30 00:40:43 -0800
commite42386016f144a90ecc138d7d8003c0eaa4981a6 (patch)
treee802c6ee2ee9efc0d0519d0d6b218d56d53c44c8 /src/lib
parentfeat(badges): manual time set (diff)
downloaddue.moe-e42386016f144a90ecc138d7d8003c0eaa4981a6.tar.xz
due.moe-e42386016f144a90ecc138d7d8003c0eaa4981a6.zip
feat(badges): sort by time
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Database/badges.ts9
-rw-r--r--src/lib/Utility/time.ts8
2 files changed, 16 insertions, 1 deletions
diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts
index 9f857469..d56fa27a 100644
--- a/src/lib/Database/badges.ts
+++ b/src/lib/Database/badges.ts
@@ -1,3 +1,4 @@
+import { databaseTimeToDate } from '$lib/Utility/time';
import { Database } from 'bun:sqlite';
export interface Badge {
@@ -28,7 +29,13 @@ database
export const getUserBadges = (userId: number): Badge[] => {
return database
.query('SELECT * FROM user_badges WHERE user_id = $userId')
- .all({ $userId: String(userId) }) as Badge[];
+ .all({ $userId: String(userId) })
+ .sort((a, b) =>
+ databaseTimeToDate((a as Badge).time ?? '').getTime() >
+ databaseTimeToDate((b as Badge).time ?? '').getTime()
+ ? -1
+ : 1
+ ) as Badge[];
};
export const addUserBadge = (userId: number, badge: Badge) => {
diff --git a/src/lib/Utility/time.ts b/src/lib/Utility/time.ts
new file mode 100644
index 00000000..e1f8d0c6
--- /dev/null
+++ b/src/lib/Utility/time.ts
@@ -0,0 +1,8 @@
+export const databaseTimeToDate = (time: string) =>
+ new Date(new Date(time + 'Z').getTime() + new Date(time + 'Z').getTimezoneOffset() * 60000);
+
+export const dateToDatabaseTime = (date: Date) =>
+ date
+ .toISOString()
+ .replace('T', ' ')
+ .replace(/\.\d+Z$/, '');