-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathUserCRUD.js
More file actions
62 lines (53 loc) · 1.63 KB
/
Copy pathUserCRUD.js
File metadata and controls
62 lines (53 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
const express = require('express');
const fs = require('fs');
const app = express();
app.use(express.json());
const DATA_FILE = 'users.json';
const readUsers = () => {
try {
return JSON.parse(fs.readFileSync(DATA_FILE));
} catch {
return [];
}
};
const writeUsers = (users) => {
fs.writeFileSync(DATA_FILE, JSON.stringify(users, null, 2));
};
app.get('/users', (req, res) => {
res.json(readUsers());
});
app.get('/users/:id', (req, res) => {
const user = readUsers().find(u => u.id === parseInt(req.params.id));
user ? res.json(user) : res.status(404).json({ message: 'User not found' });
});
app.post('/users', (req, res) => {
const users = readUsers();
const newUser = req.body;
newUser.id = users.length ? Math.max(...users.map(u => u.id)) + 1 : 1;
users.push(newUser);
writeUsers(users);
res.status(201).json(newUser);
});
app.put('/users/:id', (req, res) => {
const users = readUsers();
const user = users.find(u => u.id === parseInt(req.params.id));
if (user) {
Object.assign(user, req.body);
writeUsers(users);
res.json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
});
app.delete('/users/:id', (req, res) => {
let users = readUsers();
const user = users.find(u => u.id === parseInt(req.params.id));
if (user) {
users = users.filter(u => u.id !== user.id);
writeUsers(users);
res.json({ message: 'User deleted' });
} else {
res.status(404).json({ message: 'User not found' });
}
});
app.listen(3000, () => console.log('Server running on port 3000'));