-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtalkerRouter.js
100 lines (76 loc) · 2.77 KB
/
talkerRouter.js
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
const express = require('express');
const router = express.Router();
const fs = require('fs');
const validateToken = require('./middlewares/validateToken');
const validateTalker = require('./middlewares/validateTalker');
const talkFile = './talker.json';
const HTTP_OK_STATUS = 200;
const HTTP_ERR_STATUS = 404;
const HTTP_OK = 201;
const HTTP_204 = 204;
router.get('/', (_request, response) => {
const dataTalker = JSON.parse(fs.readFileSync(talkFile));
const talker = dataTalker.length === 0 ? [] : dataTalker;
response.status(HTTP_OK_STATUS).json(talker);
});
router.get('/search',
validateToken,
(request, response) => {
const { q } = request.query;
const dataTalker = JSON.parse(fs.readFileSync(talkFile));
const filterTalker = dataTalker.filter(({ name }) => name.includes(q));
if (!q || q === '') {
return response.status(HTTP_OK_STATUS).json(dataTalker);
}
if (filterTalker.length === 0) {
return response.status(HTTP_OK_STATUS).json([]);
}
return response.status(HTTP_OK_STATUS).json(filterTalker);
});
router.get('/:id', (request, response) => {
const { id } = request.params;
const dataTalker = JSON.parse(fs.readFileSync(talkFile));
const talkerID = dataTalker.find((talker) => talker.id === +id);
if (!talkerID) {
return response.status(HTTP_ERR_STATUS)
.json({ message: 'Pessoa palestrante não encontrada' });
}
response.status(HTTP_OK_STATUS).json(talkerID);
});
// CRUD
router.post('/',
validateToken,
validateTalker,
(request, response) => {
const { name, age, talk } = request.body;
const talkers = JSON.parse(fs.readFileSync(talkFile));
const newTalker = { id: talkers.length + 1, name, age, talk };
talkers.push(newTalker);
const upTalkers = JSON.stringify(talkers);
fs.writeFileSync(talkFile, upTalkers);
response.status(HTTP_OK).json(newTalker);
});
router.put('/:id',
validateToken,
validateTalker,
(request, response) => {
const { id } = request.params;
const { name, age, talk } = request.body;
const dataTalker = JSON.parse(fs.readFileSync(talkFile));
const talkerID = dataTalker.findIndex((talker) => +talker.id === +id);
const newTalker = { id: +id, name, age, talk };
dataTalker[talkerID] = newTalker;
fs.writeFileSync(talkFile, JSON.stringify(dataTalker));
response.status(HTTP_OK_STATUS).json(newTalker);
});
router.delete('/:id',
validateToken,
(request, response) => {
const { id } = request.params;
const dataTalker = JSON.parse(fs.readFileSync(talkFile));
const talkerID = dataTalker.findIndex((talker) => +talker.id === +id);
dataTalker.splice(talkerID, 1);
fs.writeFileSync(talkFile, JSON.stringify(dataTalker));
response.status(HTTP_204).send();
});
module.exports = router;