277 lines
6.9 KiB
JavaScript
277 lines
6.9 KiB
JavaScript
// 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}`);
|
|
});
|