'use strict'; const express = require('express'); const router = express.Router(); const pantryService = require('../services/pantryService'); const { authenticate } = require('../middleware/authenticate'); const { validate } = require('../utils/validate'); const { addPantryItemSchema, updatePantryItemSchema } = require('../utils/validation'); // All pantry routes require authentication router.use(authenticate); // GET /v1/pantry router.get('/', async (req, res, next) => { try { const items = await pantryService.getPantryItems(req.user.sub); return res.status(200).json({ items, synced_at: new Date().toISOString(), }); } catch (err) { return next(err); } }); // POST /v1/pantry router.post('/', async (req, res, next) => { try { const data = validate(addPantryItemSchema, req.body); const item = await pantryService.addPantryItem(req.user.sub, data); return res.status(201).json({ item }); } catch (err) { return next(err); } }); // PUT /v1/pantry/:item_id router.put('/:item_id', async (req, res, next) => { try { const data = validate(updatePantryItemSchema, req.body); const item = await pantryService.updatePantryItem(req.user.sub, req.params.item_id, data); return res.status(200).json({ item }); } catch (err) { return next(err); } }); // DELETE /v1/pantry/:item_id router.delete('/:item_id', async (req, res, next) => { try { await pantryService.deletePantryItem(req.user.sub, req.params.item_id); return res.status(204).send(); } catch (err) { return next(err); } }); module.exports = router;