add search
This commit is contained in:
parent
f1a9b6d444
commit
df406b636e
3 changed files with 51 additions and 17 deletions
|
|
@ -12,39 +12,60 @@ app.use(express.json());
|
|||
|
||||
let recipeList = recipes;
|
||||
// Routes
|
||||
/**
|
||||
* Load recipe list
|
||||
* allows for filtering the list based on the recipes title using the query paramter search
|
||||
*/
|
||||
app.get("/recipe", (req, res) => {
|
||||
console.log("GET /recipe")
|
||||
res.json(recipeList);
|
||||
// extract search string from query parameters, convert to lower case for case insensitive search
|
||||
let searchString : string = req.query.search ? req.query.search.toString().toLowerCase() : "";
|
||||
console.log("searchString", searchString)
|
||||
let resultList : Recipe[] = []
|
||||
if(searchString && searchString !== ""){
|
||||
// if theres a search string filter recipe list based on title
|
||||
// convert title to lower case in order to allow for case insensitive filtering
|
||||
resultList = recipeList.filter(recipe => recipe.title.toLowerCase().includes(searchString));
|
||||
} else {
|
||||
// if there is no search string simply return the entire list
|
||||
resultList = recipeList;
|
||||
}
|
||||
res.json(resultList)
|
||||
});
|
||||
|
||||
/**
|
||||
* Load a single recipe by its id
|
||||
*/
|
||||
app.get("/recipe/:id", (req, res) => {
|
||||
let recipeId : string = req.params.id;
|
||||
console.log("GET /recipe/", recipeId);
|
||||
const recipe = recipeList.find(r => r.id === req.params.id);
|
||||
console.log(recipe ? "SUCCESS" : "404")
|
||||
const recipe = recipeList.find(r => r.id === recipeId);
|
||||
recipe ? res.json(recipe) : res.status(404).send("Recipe not found");
|
||||
});
|
||||
|
||||
/**
|
||||
* Create a new recipe
|
||||
*/
|
||||
app.post("/recipe", (req, res) => {
|
||||
console.log("POST /recipe")
|
||||
const newRecipe: Recipe = { id: uuidv4(), ...req.body };
|
||||
recipeList.push(newRecipe);
|
||||
res.status(201).json(newRecipe);
|
||||
});
|
||||
|
||||
/**
|
||||
* Save an existing recipe
|
||||
*/
|
||||
app.put("/recipe/:id", (req, res) => {
|
||||
let recipeId : string = req.params.id;
|
||||
console.log("PUT /recipe/", recipeId)
|
||||
const index = recipes.findIndex(r => r.id === recipeId);
|
||||
const index = recipeList.findIndex(r => r.id === recipeId);
|
||||
if (index === -1) {
|
||||
console.log("404")
|
||||
return res.status(404).send("Recipe not found");
|
||||
}
|
||||
console.log("SUCCESS");
|
||||
recipeList[index] = { ...recipeList[index], ...req.body };
|
||||
res.json(recipeList[index]);
|
||||
});
|
||||
|
||||
/**
|
||||
* Delete a recipe by id
|
||||
*/
|
||||
app.delete("/recipe/:id", (req, res) => {
|
||||
recipeList = recipeList.filter(r => r.id !== req.params.id);
|
||||
res.status(204).send();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue