// 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"); const app = express(); const PORT = 8080; // Middleware to parse JSON app.use(bodyParser.json()); // In-memory data store for demonstration let cartData = { cart: {}, }; // CREATE - Add or update cart items app.post("/cart", (req, res) => { const { cart } = req.body; if (!cart || !cart.product || !cart.id) { return res.status(400).json({ error: "Product and ID are required" }); } // Add or update the cart item using the id as the key cartData.cart[cart.id] = { product: cart.product, id: cart.id, }; res.status(201).json({ message: "Cart updated successfully", cart: cartData, }); }); // READ - Get the entire cart app.get("/cart", (req, res) => { res.json({ message: "Cart retrieved successfully", cart: cartData, }); }); // READ - Get a specific item in the cart by id app.get("/cart/:id", (req, res) => { const { id } = req.params; const item = cartData.cart[id]; if (!item) { return res.status(404).json({ error: `Item with id '${id}' not found` }); } res.json({ message: "Item retrieved successfully", item: { [id]: item }, }); }); // UPDATE - Update a specific item in the cart by id app.put("/cart/:id", (req, res) => { const { id } = req.params; const { product } = req.body; if (!product) { return res.status(400).json({ error: "Product is required" }); } if (!cartData.cart[id]) { return res.status(404).json({ error: `Item with id '${id}' not found` }); } // Update the item cartData.cart[id].product = product; res.json({ message: "Item updated successfully", cart: cartData, }); }); // DELETE - Remove a specific item from the cart by id app.delete("/cart/:id", (req, res) => { const { id } = req.params; if (!cartData.cart[id]) { return res.status(404).json({ error: `Item with id '${id}' not found` }); } // Delete the item delete cartData.cart[id]; res.json({ message: "Item deleted successfully", cart: cartData, }); }); // Start the server app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); });