From 19fd92dffa6068aaf169a7d137ea51acdd34b1c6 Mon Sep 17 00:00:00 2001 From: Kajal Thakur Date: Fri, 10 Jan 2025 18:49:37 +0530 Subject: [PATCH] test 03 --- index.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/index.js b/index.js index dd3fc5e..fcc2049 100644 --- a/index.js +++ b/index.js @@ -43,6 +43,35 @@ app.get("/items/:id", (req, res) => { res.json(item); }); +// READ - Get items by ID and filter by query parameters +app.get("/items/:id/search", (req, res) => { + const { id } = req.params; // Path parameter + const { name, description } = req.query; // Query parameters + + // Find the item by ID + const item = items.find((i) => i.id === parseInt(id)); + if (!item) { + return res.status(404).json({ error: "Item not found" }); + } + + // Apply query parameter filters + let filteredDetails = { ...item }; + + // Filter item fields based on query parameters + if (name && !item.name.toLowerCase().includes(name.toLowerCase())) { + return res.status(404).json({ error: "Item name does not match query" }); + } + + if ( + description && + (!item.description || !item.description.toLowerCase().includes(description.toLowerCase())) + ) { + return res.status(404).json({ error: "Item description does not match query" }); + } + + res.json(filteredDetails); +}); + // UPDATE - Update item by ID app.put("/items/:id", (req, res) => { const { id } = req.params; @@ -72,6 +101,29 @@ app.delete("/items/:id", (req, res) => { res.status(204).send(); }); +// READ - Get items with optional query parameters +app.get("/items/search", (req, res) => { + const { name, description } = req.query; + + // Filter items based on query parameters + let filteredItems = items; + + if (name) { + filteredItems = filteredItems.filter((item) => + item.name.toLowerCase().includes(name.toLowerCase()) + ); + } + + if (description) { + filteredItems = filteredItems.filter((item) => + item.description && + item.description.toLowerCase().includes(description.toLowerCase()) + ); + } + + res.json(filteredItems); +}); + // Start server app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`);