78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
const express = require('express');
|
|
const users = require('./MOCK_DATA.json');
|
|
const fs = require('fs');
|
|
const app = express();
|
|
const PORT = 3000;
|
|
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
app.get('/users', (req, res) => {
|
|
return res?.json(users);
|
|
})
|
|
|
|
app.get('/users/:id', (req, res) => {
|
|
const id = req.params.id;
|
|
const user = users.find((user) => user.id == id);
|
|
if (!user) {
|
|
return res.status(404).json({ error: "404 User not found" });
|
|
}
|
|
|
|
return res.json(user);
|
|
})
|
|
|
|
app.post("/users", (req, res) => {
|
|
const body = req.body;
|
|
console.log(body);
|
|
users.push({ ...body, id: users.length + 1 });
|
|
fs.writeFile('./MOCK_DATA.json', JSON.stringify(users), (err, data) => {
|
|
if (err) {
|
|
return res.status(500).json({ error: "Failed to save user data" });
|
|
}
|
|
return res.status(201).json({ status: "Success", id: users.length });
|
|
});
|
|
});
|
|
|
|
|
|
|
|
app.delete("/users/:id", (req, res) => {
|
|
const id = Number(req.params.id);
|
|
|
|
const userIndex = users.findIndex((user) => user.id === id);
|
|
|
|
if (userIndex === -1) {
|
|
return res.status(404).json({ error: "User not found" });
|
|
}
|
|
|
|
users.splice(userIndex, 1);
|
|
|
|
fs.writeFile('./MOCK_DATA.json', JSON.stringify(users, null, 2), (err) => {
|
|
if (err) {
|
|
return res.status(500).json({ error: "Failed to delete user" });
|
|
}
|
|
return res.status(200).json({ status: "Successfully deleted", id: id });
|
|
});
|
|
});
|
|
|
|
app.put("/users/:id", (req, res) => {
|
|
const id = req.params.id;
|
|
const user = users.find((user) => user.id == id);
|
|
|
|
const updatedFields = ['firstName', 'lastName', 'email', 'gender', 'jobTitle'];
|
|
|
|
updatedFields.map((field) => {
|
|
if (req.body[field]) {
|
|
user[field] = req.body[field];
|
|
}
|
|
})
|
|
|
|
fs.writeFile('./MOCK_DATA.json', JSON.stringify(users), (err, data) => {
|
|
if (err) {
|
|
return res.status(500).json({ error: "Failed to update user data" });
|
|
}
|
|
return res.status(200).json({ status: "Successfully updated", id: id });
|
|
});
|
|
});
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`Server is running on ${PORT}`);
|
|
}) |