// 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 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, // }); // }); // // Start the server // app.listen(PORT, () => { // console.log(`Server is running on http://localhost:${PORT}`); // }); 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 attributesData = { attributes: [], }; // CREATE - Add or update attributes dynamically from "activities" // POST /activities app.post("/activities", (req, res) => { console.log("POST /activities hit"); console.log("Request Body:", req.body); // Log the entire request body const { activities } = req.body; if (!activities || typeof activities !== "object") { console.log("Error: Activities must be an object"); return res.status(400).json({ error: "Activities must be an object" }); } // Transform activities object into attributes array const attributes = Object.entries(activities).map(([key, value]) => ({ key, value, })); console.log("Transformed Attributes:", attributes); // Log transformed attributes // Add or update attributes for (const attribute of attributes) { const existingIndex = attributesData.attributes.findIndex( (item) => item.key === attribute.key ); if (existingIndex !== -1) { console.log( `Updating existing attribute: ${attribute.key} with value: ${attribute.value}` ); attributesData.attributes[existingIndex].value = attribute.value; } else { console.log(`Adding new attribute: ${attribute.key} with value: ${attribute.value}`); attributesData.attributes.push(attribute); } } console.log("Updated Attributes Data:", attributesData.attributes); // Log updated attributes data res.status(201).json({ message: "Activities processed 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, }); }); // Start the server app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); });