From 452686760140368775dfb8a7da76081dc852deee Mon Sep 17 00:00:00 2001 From: Keane Chan <e0425601@u.nus.edu> Date: Thu, 20 Oct 2022 22:15:54 +0800 Subject: [PATCH] [resumes][feat] add query for max resume upvote count --- .../resumes/badges/ResumeUserBadges.tsx | 10 ++++--- .../router/resumes/resumes-resume-router.ts | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/portal/src/components/resumes/badges/ResumeUserBadges.tsx b/apps/portal/src/components/resumes/badges/ResumeUserBadges.tsx index 9d0a9795..ffcfef07 100644 --- a/apps/portal/src/components/resumes/badges/ResumeUserBadges.tsx +++ b/apps/portal/src/components/resumes/badges/ResumeUserBadges.tsx @@ -9,15 +9,19 @@ type Props = Readonly<{ }>; export default function ResumeUserBadges({ userId }: Props) { - const userReviewedResumesCountQuery = trpc.useQuery([ + const userReviewedResumeCountQuery = trpc.useQuery([ 'resumes.resume.findUserReviewedResumeCount', { userId }, ]); + const userMaxResumeUpvoteCountQuery = trpc.useQuery([ + 'resumes.resume.findUserMaxResumeUpvoteCount', + { userId }, + ]); // TODO: Add other badges in const payload: BadgePayload = { - maxResumeUpvoteCount: 10, - reviewedResumesCount: userReviewedResumesCountQuery.data ?? 0, + maxResumeUpvoteCount: userMaxResumeUpvoteCountQuery.data ?? 0, + reviewedResumesCount: userReviewedResumeCountQuery.data ?? 0, topUpvotedCommentCount: 10, }; diff --git a/apps/portal/src/server/router/resumes/resumes-resume-router.ts b/apps/portal/src/server/router/resumes/resumes-resume-router.ts index 0747c535..f5797c9c 100644 --- a/apps/portal/src/server/router/resumes/resumes-resume-router.ts +++ b/apps/portal/src/server/router/resumes/resumes-resume-router.ts @@ -157,4 +157,30 @@ export const resumesRouter = createRouter() }, }); }, + }) + .query('findUserMaxResumeUpvoteCount', { + input: z.object({ + userId: z.string(), + }), + async resolve({ ctx, input }) { + const highestUpvotedResume = await ctx.prisma.resumesResume.findFirst({ + include: { + _count: { + select: { + stars: true, + }, + }, + }, + orderBy: { + stars: { + _count: 'desc', + }, + }, + where: { + userId: input.userId, + }, + }); + + return highestUpvotedResume?._count?.stars ?? 0; + }, });