diff options
| author | Fuwn <[email protected]> | 2026-01-23 21:38:21 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-23 21:38:21 -0800 |
| commit | f676b792dd0a19d40609ddbd42f65423a6c9adb6 (patch) | |
| tree | 5add35d5a0a684db3a1de85002da7261f091bc26 | |
| parent | fix: Add null guards and improve error messaging for user lookups (diff) | |
| download | due.moe-f676b792dd0a19d40609ddbd42f65423a6c9adb6.tar.xz due.moe-f676b792dd0a19d40609ddbd42f65423a6c9adb6.zip | |
fix(graphql): Resolve resolver type mismatches and improve error handling
| -rw-r--r-- | src/graphql/user/resolvers.ts | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/graphql/user/resolvers.ts b/src/graphql/user/resolvers.ts index 0cdd01dd..123f4589 100644 --- a/src/graphql/user/resolvers.ts +++ b/src/graphql/user/resolvers.ts @@ -6,7 +6,8 @@ import { removeUserBadge, setShadowHidden, setShadowHiddenBadge, - updateUserBadge + updateUserBadge, + type Badge as DatabaseBadge } from '$lib/Database/SB/User/badges'; import type { WithIndex } from '../$types'; import type { Resolvers, Badge } from './$types'; @@ -26,6 +27,21 @@ import privilegedUser from '$lib/Utility/privilegedUser'; type Context = RequestEvent<Partial<Record<string, string>>, string | null>; +const toGraphQLBadges = (databaseBadges: DatabaseBadge[]): Badge[] => + databaseBadges.map((databaseBadge) => ({ + id: databaseBadge.id ?? 0, + post: databaseBadge.post ?? '', + image: databaseBadge.image ?? '', + time: databaseBadge.time ?? new Date().toISOString(), + hidden: databaseBadge.hidden ?? false, + shadow_hidden: databaseBadge.shadow_hidden ?? false, + click_count: databaseBadge.click_count ?? 0, + category: databaseBadge.category ?? null, + description: databaseBadge.description ?? null, + source: databaseBadge.source ?? null, + designer: databaseBadge.designer ?? null + })); + const auth = async (context: Context) => { const userCookie = context.cookies.get('user'); @@ -47,18 +63,19 @@ const authenticatedBadgesOperation = async ( ) => { const identity = await auth(context); - if (identity instanceof Error) return []; + if (identity instanceof Error) throw new Error('Unauthorized'); const authorised = privilegedUser(identity.id); await operation(identity, authorised); - const badges = await getUserBadges(identity.id); + const databaseBadges = await getUserBadges(identity.id); + const badges = toGraphQLBadges(databaseBadges); return { id: identity.id, badges, - preferences: {}, + preferences: null, badgesCount: badges.length }; }; @@ -69,7 +86,7 @@ const authenticatedPreferencesOperation = async ( ) => { const identity = await auth(context); - if (identity instanceof Error) return []; + if (identity instanceof Error) throw new Error('Unauthorized'); const authorised = privilegedUser(identity.id); @@ -86,7 +103,8 @@ export const resolvers: WithIndex<Resolvers> = { User: async (_, args) => { if (!args.id) return null; - const badges = await getUserBadges(args.id); + const databaseBadges = await getUserBadges(args.id); + const badges = toGraphQLBadges(databaseBadges); return { id: args.id, @@ -96,11 +114,11 @@ export const resolvers: WithIndex<Resolvers> = { }; }, badges: async (_, args) => { - if (!args.id) return null; + if (!args.id) return []; - const badges = await getUserBadges(args.id, args.page || 0, args.size || 0); + const databaseBadges = await getUserBadges(args.id, args.page || 0, args.size || 0); - return badges; + return toGraphQLBadges(databaseBadges); } }, Mutation: { |