feat: phase 2 — exercises + programs CRUD, seed 12 exercices + 2 programmes

This commit is contained in:
2026-03-26 03:46:35 +00:00
parent 48446b483c
commit 4646c6ed1a
9 changed files with 348 additions and 3 deletions

View File

@@ -0,0 +1,25 @@
import { z } from "zod";
const programExerciseSchema = z.object({
exerciseId: z.string().uuid(),
sets: z.number().int().min(1),
reps: z.number().int().min(1).optional(),
durationSec: z.number().int().min(1).optional(),
order: z.number().int().min(0).default(0),
});
export const createProgramSchema = z.object({
name: z.string().min(2).max(50),
description: z.string().max(300).optional(),
isPublic: z.boolean().default(false),
exercises: z.array(programExerciseSchema).min(1),
});
export const updateProgramSchema = z.object({
name: z.string().min(2).max(50).optional(),
description: z.string().max(300).optional(),
isPublic: z.boolean().optional(),
});
export type CreateProgramInput = z.infer<typeof createProgramSchema>;
export type UpdateProgramInput = z.infer<typeof updateProgramSchema>;