30 lines
No EOL
1.1 KiB
TypeScript
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; |