From 9fa28f5fe5f0d8e4c6bc5e907b241d56861b8c43 Mon Sep 17 00:00:00 2001 From: mattrwang Date: Wed, 22 Jan 2025 13:00:18 -0500 Subject: [PATCH 1/3] prevents creation of new review if already 5 --- packages/api/src/router/review.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/api/src/router/review.ts b/packages/api/src/router/review.ts index 217097a..7da1934 100644 --- a/packages/api/src/router/review.ts +++ b/packages/api/src/router/review.ts @@ -1,4 +1,5 @@ import type { TRPCRouterRecord } from "@trpc/server"; +import { TRPCError } from "@trpc/server"; import Fuse from "fuse.js"; import { z } from "zod"; @@ -72,7 +73,26 @@ export const reviewRouter = { create: protectedProcedure .input(CreateReviewSchema) - .mutation(({ ctx, input }) => { + .mutation(async ({ ctx, input }) => { + console.log("hey"); + if (!input.profileId) { + console.log("no profile id"); + throw new TRPCError({ + code: "FORBIDDEN", + message: "You must be logged in to leave a review", + }); + } + const reviews = await ctx.db.query.Review.findMany({ + where: eq(Review.profileId, input.profileId), + }); + if (reviews.length >= 5) { + console.log("already 5"); + throw new TRPCError({ + code: "FORBIDDEN", + message: "You can only leave 5 reviews", + }); + } + console.log("success"); return ctx.db.insert(Review).values(input); }), From 06360d6b7b6f9e7563e69d0c529c4f8159ce6ba0 Mon Sep 17 00:00:00 2001 From: mattrwang Date: Wed, 22 Jan 2025 13:42:40 -0500 Subject: [PATCH 2/3] max 2 reviews per cycle --- packages/api/src/router/review.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/api/src/router/review.ts b/packages/api/src/router/review.ts index 7da1934..fa7cd99 100644 --- a/packages/api/src/router/review.ts +++ b/packages/api/src/router/review.ts @@ -74,7 +74,7 @@ export const reviewRouter = { create: protectedProcedure .input(CreateReviewSchema) .mutation(async ({ ctx, input }) => { - console.log("hey"); + console.log("new review"); if (!input.profileId) { console.log("no profile id"); throw new TRPCError({ @@ -92,6 +92,18 @@ export const reviewRouter = { message: "You can only leave 5 reviews", }); } + const reviewsInSameCycle = reviews.filter( + (review) => + review.workTerm === input.workTerm && + review.workYear === input.workYear, + ); + if (reviewsInSameCycle.length >= 2) { + console.log("already 2 in same cycle"); + throw new TRPCError({ + code: "FORBIDDEN", + message: "You can only leave 2 reviews per cycle", + }); + } console.log("success"); return ctx.db.insert(Review).values(input); }), From b5fcd76ebe08989f2d15c11acb20d7ae6e1dae86 Mon Sep 17 00:00:00 2001 From: mattrwang Date: Sun, 26 Jan 2025 14:04:44 -0500 Subject: [PATCH 3/3] resolved changes --- packages/api/src/router/review.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/api/src/router/review.ts b/packages/api/src/router/review.ts index fa7cd99..fdf7053 100644 --- a/packages/api/src/router/review.ts +++ b/packages/api/src/router/review.ts @@ -74,9 +74,7 @@ export const reviewRouter = { create: protectedProcedure .input(CreateReviewSchema) .mutation(async ({ ctx, input }) => { - console.log("new review"); if (!input.profileId) { - console.log("no profile id"); throw new TRPCError({ code: "FORBIDDEN", message: "You must be logged in to leave a review", @@ -86,9 +84,8 @@ export const reviewRouter = { where: eq(Review.profileId, input.profileId), }); if (reviews.length >= 5) { - console.log("already 5"); throw new TRPCError({ - code: "FORBIDDEN", + code: "PRECONDITION_FAILED", message: "You can only leave 5 reviews", }); } @@ -98,13 +95,11 @@ export const reviewRouter = { review.workYear === input.workYear, ); if (reviewsInSameCycle.length >= 2) { - console.log("already 2 in same cycle"); throw new TRPCError({ - code: "FORBIDDEN", + code: "PRECONDITION_FAILED", message: "You can only leave 2 reviews per cycle", }); } - console.log("success"); return ctx.db.insert(Review).values(input); }),