From b0650fc840adcdc635dd97dd3cdf9c2e7812a346 Mon Sep 17 00:00:00 2001 From: Rushil Perera Date: Sat, 6 Dec 2025 08:26:16 -0500 Subject: [PATCH] feat: Implement and register user profile GraphQL resolver --- src/graphql/resolvers/index.ts | 30 ++++++++++++++------------- src/graphql/resolvers/queries/user.ts | 21 +++++++++++++++++++ 2 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 src/graphql/resolvers/queries/user.ts diff --git a/src/graphql/resolvers/index.ts b/src/graphql/resolvers/index.ts index 3f7a3e0..06501f9 100644 --- a/src/graphql/resolvers/index.ts +++ b/src/graphql/resolvers/index.ts @@ -7,21 +7,23 @@ import { popularBrowse } from "./queries/popularBrowse"; import { popularByCategory } from "./queries/popularByCategory"; import { search } from "./queries/search"; import { title } from "./queries/title"; +import { user } from "./queries/user"; import { Title } from "./title"; export const resolvers = { - Query: { - healthCheck, - title, - search, - popularBrowse, - popularByCategory, - episodeStream, - }, - Mutation: { - updateWatchStatus: updateWatchStatusMutation, - markEpisodeAsWatched: markEpisodeAsWatchedMutation, - updateToken: updateTokenMutation, - }, - Title, + Query: { + healthCheck, + title, + search, + popularBrowse, + popularByCategory, + episodeStream, + user, + }, + Mutation: { + updateWatchStatus: updateWatchStatusMutation, + markEpisodeAsWatched: markEpisodeAsWatchedMutation, + updateToken: updateTokenMutation, + }, + Title, }; diff --git a/src/graphql/resolvers/queries/user.ts b/src/graphql/resolvers/queries/user.ts new file mode 100644 index 0000000..5f498b7 --- /dev/null +++ b/src/graphql/resolvers/queries/user.ts @@ -0,0 +1,21 @@ +import { getUser } from "~/controllers/auth/anilist/getUser"; +import type { GraphQLContext } from "~/graphql/context"; +import { GraphQLError } from "graphql"; + +export async function user(_parent: any, _args: {}, context: GraphQLContext) { + const { aniListToken } = context; + if (!aniListToken) { + throw new GraphQLError("Unauthorized", { + extensions: { code: "UNAUTHORIZED" }, + }); + } + + const response = await getUser(aniListToken); + if (!response) { + throw new GraphQLError(`Failed to fetch user`, { + extensions: { code: "INTERNAL_SERVER_ERROR" }, + }); + } + + return response; +} \ No newline at end of file