super-fit-web-app / src / server / routers / program.ts
program.ts
Raw
import { createProgram } from "@/utils/planetscale/create-program";
import { TRPCError } from '@trpc/server';
import { z } from "zod";
import { procedure, router } from "../trpc";

export const programRouter = router({
  createProgram: procedure
    .input(z.object({
      programData: z.object({
        name: z.string(),
        description: z.string(),
        category: z.string(),
        difficulty: z.array(z.number()),
        exercises: z.array(z.object({
          id: z.string(),
          reps: z.string(),
          sets: z.string(),
          rest: z.string(),
        })),
      })
    }))
    .mutation(async ({ ctx, input }) => {
      try {
        const { programData } = input;
        await createProgram(programData, ctx.req, ctx.res);
      } catch (error) {
        console.log(error)
        if (error instanceof TRPCError) throw error;
        throw new TRPCError({
          code: 'INTERNAL_SERVER_ERROR',
          message: (error as Error).message,
          cause: error
        });
      }
    }),
})