const express = require('express'); const router = express.Router(); const Recipe = require('../models/Recipe'); // Get all recipes router.get('/', async (req, res) => { try { const { category, difficulty, search } = req.query; let filter = {}; if (category) filter.category = category; if (difficulty) filter.difficulty = difficulty; if (search) { filter.$or = [ { title: { $regex: search, $options: 'i' } }, { description: { $regex: search, $options: 'i' } } ]; } const recipes = await Recipe.find(filter).sort({ createdAt: -1 }); res.json(recipes); } catch (error) { res.status(500).json({ error: error.message }); } }); // Get recipe by ID router.get('/:id', async (req, res) => { try { const recipe = await Recipe.findById(req.params.id); if (!recipe) { return res.status(404).json({ error: 'Recipe not found' }); } res.json(recipe); } catch (error) { res.status(500).json({ error: error.message }); } }); // Create new recipe router.post('/', async (req, res) => { try { const recipe = new Recipe(req.body); await recipe.save(); res.status(201).json(recipe); } catch (error) { res.status(400).json({ error: error.message }); } }); // Update recipe router.put('/:id', async (req, res) => { try { const recipe = await Recipe.findByIdAndUpdate( req.params.id, req.body, { new: true, runValidators: true } ); if (!recipe) { return res.status(404).json({ error: 'Recipe not found' }); } res.json(recipe); } catch (error) { res.status(400).json({ error: error.message }); } }); // Delete recipe router.delete('/:id', async (req, res) => { try { const recipe = await Recipe.findByIdAndDelete(req.params.id); if (!recipe) { return res.status(404).json({ error: 'Recipe not found' }); } res.json({ message: 'Recipe deleted successfully' }); } catch (error) { res.status(500).json({ error: error.message }); } }); module.exports = router;