recipe-backend/src/endpoints/CompactRecipePoint.ts
2025-10-04 21:04:05 +02:00

30 lines
No EOL
1.1 KiB
TypeScript

import { Router } from "express";
import { asyncHandler } from "../utils/asyncHandler.js";
import { RecipeRepository } from "../repositories/RecipeRepository.js";
import { CompactRecipeHandler } from "../handlers/CompactRecipeHandler.js";
import { CompactRecipeDtoEntityMapper } from "../mappers/CompactRecipeDtoEntityMapper.js";
/**
* Handles all recipe related routes
*/
const router = Router();
// Inject repo + mapper here
const recipeRepository = new RecipeRepository();
const compactRecipeMapper = new CompactRecipeDtoEntityMapper();
const compactRecipeHandler = new CompactRecipeHandler(recipeRepository, compactRecipeMapper);
/**
* Load header data of all recipes
* Responds with a list of CompactRecipeDtos
*/
router.get(
"/",
asyncHandler(async (req, res) => {
// extract search string from query parameters, convert to lower case for case insensitive search
const searchString : string = req.query.search ? req.query.search.toString().toLowerCase() : "";
const response = await compactRecipeHandler.getMatchingRecipes(searchString);
res.status(201).json(response);
})
);
export default router;