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; + }, });