Vibed it... :(

This commit is contained in:
2025-08-09 14:34:48 +01:00
commit 5cf478feab
41 changed files with 23512 additions and 0 deletions

81
backend/routes/recipes.js Normal file
View File

@@ -0,0 +1,81 @@
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;