import { Router, Response, NextFunction } from 'express'; import { authMiddleware, AuthenticatedRequest } from '../middleware/auth'; import { recipeService } from '../services/recipeService'; import { recipeQuerySchema, recipeDetailQuerySchema } from '../utils/validators'; const router = Router(); router.use(authMiddleware); // GET /recipes router.get('/', async (req: AuthenticatedRequest, res: Response, next: NextFunction) => { try { const { filter, page, limit, search } = recipeQuerySchema.parse(req.query); const result = await recipeService.getRecipes(req.userId!, filter, page, limit, search); res.status(200).json({ ...result, synced_at: new Date().toISOString() }); } catch (err) { next(err); } }); // GET /recipes/:recipe_id router.get('/:recipe_id', async (req: AuthenticatedRequest, res: Response, next: NextFunction) => { try { const { scale } = recipeDetailQuerySchema.parse(req.query); const recipe = await recipeService.getRecipeById(req.params.recipe_id, req.userId!, scale); res.status(200).json({ recipe }); } catch (err) { next(err); } }); export default router;