From e2250804eb9381909554542e17251583607c63ea Mon Sep 17 00:00:00 2001 From: Zeke Abshire Date: Wed, 13 Dec 2023 23:44:57 -0600 Subject: [PATCH] feat: exercise api --- src/server/api/routers/exercise.ts | 32 +++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/server/api/routers/exercise.ts b/src/server/api/routers/exercise.ts index bf4bdac..c3080fb 100644 --- a/src/server/api/routers/exercise.ts +++ b/src/server/api/routers/exercise.ts @@ -1,9 +1,27 @@ import { eq } from "drizzle-orm"; -import { - createTRPCRouter, - protectedProcedure, - publicProcedure, -} from "~/server/api/trpc"; -import { exercises } from "~/server/db/schema"; +import { z } from "zod"; +import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc"; +import { exercises, topicToExercise } from "~/server/db/schema"; -export const exerciseRouter = createTRPCRouter({}); +export const exerciseRouter = createTRPCRouter({ + getAllTopicExercises: protectedProcedure + .input(z.object({ topicId: z.number() })) + .query(async ({ ctx, input }) => { + return await ctx.db.query.topicToExercise.findMany({ + where: eq(topicToExercise.topicId, input.topicId), + with: { exercise: true }, + }); + }), + getExercise: protectedProcedure + .input( + z.object({ + exerciseId: z.number(), + includeExercises: z.boolean().optional().default(false), + }), + ) + .query(async ({ ctx, input }) => { + return await ctx.db.query.exercises.findFirst({ + where: eq(exercises.exerciseId, input.exerciseId), + }); + }), +});