feat(06-01): Implement workout swap/rotation system - API, DB, frontend

- Add workout_swaps table migration (007_add_workout_swap_tracking.sql)
- Implement 4 API endpoints: POST /swap, DELETE /undo, GET /swaps, GET /available
- Add request validation, error handling, user isolation, muscle group checks
- Create SwapWorkoutModal React component with modal UI
- Integrate swap functionality into WorkoutPage
- Add proper styling for swap modal
- All endpoints require authentication
- Database migration includes performance indexes
This commit is contained in:
2026-03-06 15:06:31 +01:00
parent 0af9c3935b
commit 6ad917c9b9
6 changed files with 1022 additions and 21 deletions
+2
View File
@@ -8,6 +8,7 @@ const requestLoggerMiddleware = require('./middleware/requestLogger');
const { getHealthStatus, getUptime } = require('./utils/health');
const { createExerciseResearchRouter } = require('./routes/exerciseResearch');
const { createExerciseRecommendationRouter } = require('./routes/exerciseRecommendations');
const { createWorkoutRouter } = require('./routes/workouts');
const { searchExerciseResearch } = require('./services/exaSearch');
const app = express();
@@ -29,6 +30,7 @@ app.use(requestLoggerMiddleware); // Add request logging middleware
app.use('/api/exercises', createExerciseResearchRouter({ pool, exaSearch: searchExerciseResearch }));
app.use('/api/exercises', createExerciseRecommendationRouter());
app.use('/api/workouts', createWorkoutRouter({ pool }));
const authMiddleware = (req, res, next) => {
const token = req.headers.authorization?.split(' ')[1];