Datei-Struktur ordentlich bereinigt
This commit is contained in:
		
							
								
								
									
										159
									
								
								backend/dist/routes/ingredients.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								backend/dist/routes/ingredients.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,159 @@ | ||||
| "use strict"; | ||||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const express_1 = require("express"); | ||||
| const client_1 = require("@prisma/client"); | ||||
| const joi_1 = __importDefault(require("joi")); | ||||
| const router = (0, express_1.Router)(); | ||||
| const prisma = new client_1.PrismaClient(); | ||||
| const ingredientSchema = joi_1.default.object({ | ||||
|     recipeNumber: joi_1.default.string().required().max(20), | ||||
|     ingredients: joi_1.default.string().required(), | ||||
| }); | ||||
| const updateIngredientSchema = ingredientSchema.fork(['recipeNumber'], (schema) => schema.optional()); | ||||
| router.get('/', async (req, res, next) => { | ||||
|     try { | ||||
|         const { search = '', category = '', page = '1', limit = '10', sortBy = 'recipeNumber', sortOrder = 'asc' } = req.query; | ||||
|         const pageNum = parseInt(page); | ||||
|         const limitNum = parseInt(limit); | ||||
|         const skip = (pageNum - 1) * limitNum; | ||||
|         const where = {}; | ||||
|         if (search) { | ||||
|             where.OR = [ | ||||
|                 { recipeNumber: { contains: search } }, | ||||
|                 { ingredients: { contains: search } }, | ||||
|             ]; | ||||
|         } | ||||
|         if (category) { | ||||
|             where.recipeNumber = { contains: category }; | ||||
|         } | ||||
|         const [ingredients, total] = await Promise.all([ | ||||
|             prisma.ingredient.findMany({ | ||||
|                 where, | ||||
|                 orderBy: { [sortBy]: sortOrder }, | ||||
|                 skip, | ||||
|                 take: limitNum, | ||||
|             }), | ||||
|             prisma.ingredient.count({ where }) | ||||
|         ]); | ||||
|         return res.json({ | ||||
|             success: true, | ||||
|             data: ingredients, | ||||
|             pagination: { | ||||
|                 page: pageNum, | ||||
|                 limit: limitNum, | ||||
|                 total, | ||||
|                 pages: Math.ceil(total / limitNum), | ||||
|             }, | ||||
|         }); | ||||
|     } | ||||
|     catch (error) { | ||||
|         next(error); | ||||
|     } | ||||
| }); | ||||
| router.get('/:id', async (req, res, next) => { | ||||
|     try { | ||||
|         const { id } = req.params; | ||||
|         if (!id) { | ||||
|             return res.status(400).json({ | ||||
|                 success: false, | ||||
|                 message: 'Ingredient ID is required', | ||||
|             }); | ||||
|         } | ||||
|         const ingredient = await prisma.ingredient.findUnique({ | ||||
|             where: { id: parseInt(id) } | ||||
|         }); | ||||
|         if (!ingredient) { | ||||
|             return res.status(404).json({ | ||||
|                 success: false, | ||||
|                 message: 'Ingredient not found', | ||||
|             }); | ||||
|         } | ||||
|         return res.json({ | ||||
|             success: true, | ||||
|             data: ingredient, | ||||
|         }); | ||||
|     } | ||||
|     catch (error) { | ||||
|         next(error); | ||||
|     } | ||||
| }); | ||||
| router.post('/', async (req, res, next) => { | ||||
|     try { | ||||
|         const { error, value } = ingredientSchema.validate(req.body); | ||||
|         if (error) { | ||||
|             return res.status(400).json({ | ||||
|                 success: false, | ||||
|                 message: 'Validation error', | ||||
|                 details: error.details, | ||||
|             }); | ||||
|         } | ||||
|         const ingredient = await prisma.ingredient.create({ | ||||
|             data: value | ||||
|         }); | ||||
|         return res.status(201).json({ | ||||
|             success: true, | ||||
|             data: ingredient, | ||||
|             message: 'Ingredient created successfully', | ||||
|         }); | ||||
|     } | ||||
|     catch (error) { | ||||
|         next(error); | ||||
|     } | ||||
| }); | ||||
| router.put('/:id', async (req, res, next) => { | ||||
|     try { | ||||
|         const { id } = req.params; | ||||
|         if (!id) { | ||||
|             return res.status(400).json({ | ||||
|                 success: false, | ||||
|                 message: 'Ingredient ID is required', | ||||
|             }); | ||||
|         } | ||||
|         const { error, value } = updateIngredientSchema.validate(req.body); | ||||
|         if (error) { | ||||
|             return res.status(400).json({ | ||||
|                 success: false, | ||||
|                 message: 'Validation error', | ||||
|                 details: error.details, | ||||
|             }); | ||||
|         } | ||||
|         const ingredient = await prisma.ingredient.update({ | ||||
|             where: { id: parseInt(id) }, | ||||
|             data: value | ||||
|         }); | ||||
|         return res.json({ | ||||
|             success: true, | ||||
|             data: ingredient, | ||||
|             message: 'Ingredient updated successfully', | ||||
|         }); | ||||
|     } | ||||
|     catch (error) { | ||||
|         next(error); | ||||
|     } | ||||
| }); | ||||
| router.delete('/:id', async (req, res, next) => { | ||||
|     try { | ||||
|         const { id } = req.params; | ||||
|         if (!id) { | ||||
|             return res.status(400).json({ | ||||
|                 success: false, | ||||
|                 message: 'Ingredient ID is required', | ||||
|             }); | ||||
|         } | ||||
|         await prisma.ingredient.delete({ | ||||
|             where: { id: parseInt(id) } | ||||
|         }); | ||||
|         return res.json({ | ||||
|             success: true, | ||||
|             message: 'Ingredient deleted successfully', | ||||
|         }); | ||||
|     } | ||||
|     catch (error) { | ||||
|         next(error); | ||||
|     } | ||||
| }); | ||||
| exports.default = router; | ||||
| //# sourceMappingURL=ingredients.js.map | ||||
		Reference in New Issue
	
	Block a user