From e74fa5a8eef2558b50de71805a41f15d967b0f0e Mon Sep 17 00:00:00 2001 From: Kajal Thakur Date: Mon, 20 Jan 2025 19:20:37 +0530 Subject: [PATCH] test --- index.js | 248 +++++++++++++++++-------------------------------------- 1 file changed, 78 insertions(+), 170 deletions(-) diff --git a/index.js b/index.js index 9f3c89d..75e15db 100644 --- a/index.js +++ b/index.js @@ -1,126 +1,3 @@ -// const express = require("express"); -// const bodyParser = require("body-parser"); - -// const app = express(); - -// // Middleware to parse JSON -// app.use(bodyParser.json()); - -// // In-memory data store for demonstration -// let attributesData = { -// attributes: [], -// }; - -// // CREATE - Add or update attributes -// app.post("/attributes", (req, res) => { -// const { attributes } = req.body; - -// if (!attributes || !Array.isArray(attributes)) { -// return res.status(400).json({ error: "Attributes must be an array" }); -// } - -// for (const attribute of attributes) { -// if (!attribute.key || !attribute.value) { -// return res.status(400).json({ -// error: "Each attribute must have a 'key' and 'value'", -// }); -// } - -// // Check if the attribute already exists; if yes, update it -// const existingIndex = attributesData.attributes.findIndex( -// (item) => item.key === attribute.key -// ); -// if (existingIndex !== -1) { -// attributesData.attributes[existingIndex].value = attribute.value; -// } else { -// // Add new attribute -// attributesData.attributes.push(attribute); -// } -// } - -// res.status(201).json({ -// message: "Attributes updated successfully", -// attributes: attributesData.attributes, -// }); -// }); - -// // READ - Get all attributes -// app.get("/attributes", (req, res) => { -// res.json({ -// message: "Attributes retrieved successfully", -// attributes: attributesData.attributes, -// }); -// }); - -// // READ - Get a specific attribute by key -// app.get("/attributes/:key", (req, res) => { -// const { key } = req.params; - -// const attribute = attributesData.attributes.find( -// (item) => item.key === key -// ); - -// if (!attribute) { -// return res.status(404).json({ error: `Attribute with key '${key}' not found` }); -// } - -// res.json({ -// message: "Attribute retrieved successfully", -// attribute, -// }); -// }); - -// // UPDATE - Update a specific attribute by key -// app.put("/attributes/:key", (req, res) => { -// const { key } = req.params; -// const { value } = req.body; - -// if (!value) { -// return res.status(400).json({ error: "Value is required to update the attribute" }); -// } - -// const attribute = attributesData.attributes.find( -// (item) => item.key === key -// ); - -// if (!attribute) { -// return res.status(404).json({ error: `Attribute with key '${key}' not found` }); -// } - -// // Update the value -// attribute.value = value; - -// res.json({ -// message: "Attribute updated successfully", -// attributes: attributesData.attributes, -// }); -// }); - -// // DELETE - Remove a specific attribute by key -// app.delete("/attributes/:key", (req, res) => { -// const { key } = req.params; - -// const index = attributesData.attributes.findIndex( -// (item) => item.key === key -// ); - -// if (index === -1) { -// return res.status(404).json({ error: `Attribute with key '${key}' not found` }); -// } - -// // Remove the attribute -// attributesData.attributes.splice(index, 1); - -// res.json({ -// message: "Attribute deleted successfully", -// attributes: attributesData.attributes, -// }); -// }); - -// // Export app for serverless deployment -// module.exports = app; - - const express = require("express"); const bodyParser = require("body-parser"); @@ -131,90 +8,121 @@ const PORT = 8080; app.use(bodyParser.json()); // In-memory data store for demonstration -let cartData = { - cart: {}, +let attributesData = { + attributes: [], }; -// CREATE - Add or update cart items -app.post("/cart", (req, res) => { - const { cart } = req.body; +// CREATE - Add or update attributes +app.post("/attributes", (req, res) => { + const { attributes } = req.body; - if (!cart || !cart.product || !cart.id) { - return res.status(400).json({ error: "Product and ID are required" }); + if (!attributes || !Array.isArray(attributes)) { + return res.status(400).json({ error: "Attributes must be an array" }); } - // Add or update the cart item using the id as the key - cartData.cart[cart.id] = { - product: cart.product, - id: cart.id, - }; + for (const attribute of attributes) { + if (!attribute.key || !attribute.value) { + return res.status(400).json({ + error: "Each attribute must have a 'key' and 'value'", + }); + } + + // Check if the attribute already exists; if yes, update it + const existingIndex = attributesData.attributes.findIndex( + (item) => item.key === attribute.key + ); + if (existingIndex !== -1) { + attributesData.attributes[existingIndex].value = attribute.value; + } else { + // Add new attribute + attributesData.attributes.push(attribute); + } + } res.status(201).json({ - message: "Cart updated successfully", - cart: cartData, + message: "Attributes updated successfully", + attributes: attributesData.attributes, }); }); -// READ - Get the entire cart -app.get("/cart", (req, res) => { +// READ - Get all attributes +app.get("/attributes", (req, res) => { res.json({ - message: "Cart retrieved successfully", - cart: cartData, + message: "Attributes retrieved successfully", + attributes: attributesData.attributes, }); }); -// READ - Get a specific item in the cart by id -app.get("/cart/:id", (req, res) => { - const { id } = req.params; +// READ - Get a specific attribute by key +app.get("/attributes/:key", (req, res) => { + const { key } = req.params; - const item = cartData.cart[id]; + const attribute = attributesData.attributes.find( + (item) => item.key === key + ); - if (!item) { - return res.status(404).json({ error: `Item with id '${id}' not found` }); + if (!attribute) { + return res + .status(404) + .json({ error: `Attribute with key '${key}' not found` }); } res.json({ - message: "Item retrieved successfully", - item: { [id]: item }, + message: "Attribute retrieved successfully", + attribute, }); }); -// UPDATE - Update a specific item in the cart by id -app.put("/cart/:id", (req, res) => { - const { id } = req.params; - const { product } = req.body; +// UPDATE - Update a specific attribute by key +app.put("/attributes/:key", (req, res) => { + const { key } = req.params; + const { value } = req.body; - if (!product) { - return res.status(400).json({ error: "Product is required" }); + if (!value) { + return res + .status(400) + .json({ error: "Value is required to update the attribute" }); } - if (!cartData.cart[id]) { - return res.status(404).json({ error: `Item with id '${id}' not found` }); + const attribute = attributesData.attributes.find( + (item) => item.key === key + ); + + if (!attribute) { + return res + .status(404) + .json({ error: `Attribute with key '${key}' not found` }); } - // Update the item - cartData.cart[id].product = product; + // Update the value + attribute.value = value; res.json({ - message: "Item updated successfully", - cart: cartData, + message: "Attribute updated successfully", + attributes: attributesData.attributes, }); }); -// DELETE - Remove a specific item from the cart by id -app.delete("/cart/:id", (req, res) => { - const { id } = req.params; +// DELETE - Remove a specific attribute by key +app.delete("/attributes/:key", (req, res) => { + const { key } = req.params; - if (!cartData.cart[id]) { - return res.status(404).json({ error: `Item with id '${id}' not found` }); + const index = attributesData.attributes.findIndex( + (item) => item.key === key + ); + + if (index === -1) { + return res + .status(404) + .json({ error: `Attribute with key '${key}' not found` }); } - // Delete the item - delete cartData.cart[id]; + // Remove the attribute + attributesData.attributes.splice(index, 1); res.json({ - message: "Item deleted successfully", - cart: cartData, + message: "Attribute deleted successfully", + attributes: attributesData.attributes, }); });