diff options
| author | Fuwn <[email protected]> | 2023-12-30 00:40:43 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-30 00:40:43 -0800 |
| commit | e42386016f144a90ecc138d7d8003c0eaa4981a6 (patch) | |
| tree | e802c6ee2ee9efc0d0519d0d6b218d56d53c44c8 /src/lib | |
| parent | feat(badges): manual time set (diff) | |
| download | due.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.ts | 9 | ||||
| -rw-r--r-- | src/lib/Utility/time.ts | 8 |
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$/, ''); |