From 889eb50070862ecb8213b7691baf6d3072296c0b Mon Sep 17 00:00:00 2001 From: Clawd Date: Sat, 21 Feb 2026 18:44:18 +0100 Subject: [PATCH] feat(02-02): add DELETE /api/logs endpoint to backend - DELETE /api/logs accepts user_id, program_exercise_id, date, set_number in request body - Deletes matching workout_logs row by composite key - Returns 200 + deleted id on success, 404 if row not found - Consistent with existing POST /api/logs (no auth middleware, user_id from body) --- backend/src/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/src/index.js b/backend/src/index.js index 2ef0596..faa4fca 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -328,6 +328,27 @@ app.post('/api/logs', async (req, res) => { } }); +// Delete a specific set log +app.delete('/api/logs', async (req, res) => { + try { + const { user_id, program_exercise_id, date, set_number } = req.body; + + const result = await pool.query( + 'DELETE FROM workout_logs WHERE user_id = $1 AND program_exercise_id = $2 AND date = $3 AND set_number = $4 RETURNING id', + [user_id, program_exercise_id, date, set_number] + ); + + if (result.rows.length === 0) { + return res.status(404).json({ error: 'Log not found' }); + } + + res.json({ deleted: result.rows[0].id }); + } catch (err) { + console.error('Error deleting log:', err); + res.status(500).json({ error: 'Database error' }); + } +}); + // Calculate suggested weight based on progression app.get('/api/progression/:programExerciseId', async (req, res) => { try {