This commit is contained in:
Kajal Thakur 2025-01-10 18:49:37 +05:30
parent 3c0306d590
commit 19fd92dffa

View File

@ -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}`);