From 529d0045168f6e9b3316a02db5df8fccc67a5c65 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Sat, 21 Mar 2026 09:38:01 +0100 Subject: [PATCH] fitness: fix template edit validation and allow empty sets - Validate exerciseId instead of name (templates use exerciseId, not name) - Remove mandatory reps minimum from template sets - Allow exercises with empty sets in schema and API validation --- src/models/WorkoutTemplate.ts | 8 +------- src/routes/api/fitness/templates/+server.ts | 10 ++-------- src/routes/api/fitness/templates/[id]/+server.ts | 10 ++-------- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/models/WorkoutTemplate.ts b/src/models/WorkoutTemplate.ts index cc26b7b..aa696a6 100644 --- a/src/models/WorkoutTemplate.ts +++ b/src/models/WorkoutTemplate.ts @@ -66,13 +66,7 @@ const ExerciseSchema = new mongoose.Schema({ }, sets: { type: [SetSchema], - required: true, - validate: { - validator: function(sets: ISet[]) { - return sets.length > 0; - }, - message: 'An exercise must have at least one set' - } + default: [] }, restTime: { type: Number, diff --git a/src/routes/api/fitness/templates/+server.ts b/src/routes/api/fitness/templates/+server.ts index 93e9244..a1faacc 100644 --- a/src/routes/api/fitness/templates/+server.ts +++ b/src/routes/api/fitness/templates/+server.ts @@ -53,14 +53,8 @@ export const POST: RequestHandler = async ({ request, locals }) => { // Validate exercises structure for (const exercise of exercises) { - if (!exercise.exerciseId || !exercise.sets || !Array.isArray(exercise.sets) || exercise.sets.length === 0) { - return json({ error: 'Each exercise must have an exerciseId and at least one set' }, { status: 400 }); - } - - for (const set of exercise.sets) { - if (!set.reps || typeof set.reps !== 'number' || set.reps < 1) { - return json({ error: 'Each set must have valid reps (minimum 1)' }, { status: 400 }); - } + if (!exercise.exerciseId) { + return json({ error: 'Each exercise must have an exerciseId' }, { status: 400 }); } } diff --git a/src/routes/api/fitness/templates/[id]/+server.ts b/src/routes/api/fitness/templates/[id]/+server.ts index 7b6e492..981685e 100644 --- a/src/routes/api/fitness/templates/[id]/+server.ts +++ b/src/routes/api/fitness/templates/[id]/+server.ts @@ -60,14 +60,8 @@ export const PUT: RequestHandler = async ({ params, request, locals }) => { // Validate exercises structure for (const exercise of exercises) { - if (!exercise.name || !exercise.sets || !Array.isArray(exercise.sets) || exercise.sets.length === 0) { - return json({ error: 'Each exercise must have a name and at least one set' }, { status: 400 }); - } - - for (const set of exercise.sets) { - if (!set.reps || typeof set.reps !== 'number' || set.reps < 1) { - return json({ error: 'Each set must have valid reps (minimum 1)' }, { status: 400 }); - } + if (!exercise.exerciseId) { + return json({ error: 'Each exercise must have an exerciseId' }, { status: 400 }); } }