-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
102 lines (80 loc) · 2.59 KB
/
index.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
101
102
const express = require('express');
const app = express();
const Joi = require('joi');
const TarefaModel = require('./models/TarefaModel');
app.use(express.json());
const tarefaModel = new TarefaModel();
// Operação de Listar
app.get('/tarefas', (req, res) => {
const tarefas = tarefaModel.listar();
res.send(tarefas);
});
// Operação de Inserir
app.post('/tarefas', (req, res) => {
const schema = Joi.object({
descricao: Joi.string().min(3).required(),
concluida: Joi.boolean().required(),
});
const { error } = schema.validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
const { descricao, concluida } = req.body;
const novaTarefa = { id: tarefaModel.tarefas.length + 1, descricao, concluida };
tarefaModel.inserir(novaTarefa);
res.send(novaTarefa);
});
// Operação de Buscar pelo ID
app.get('/tarefas/:id', (req, res) => {
const { id } = req.params;
const schema = Joi.number().integer().positive().required();
const { error } = schema.validate(id);
if (error) {
return res.status(400).send(error.details[0].message);
}
const tarefa = tarefaModel.buscarPorId(parseInt(id));
if (!tarefa) {
return res.status(404).send('Tarefa não encontrada');
}
res.send(tarefa);
});
// Operação de Alterar
app.put('/tarefas/:id', (req, res) => {
const { id } = req.params;
const schemaId = Joi.number().integer().positive().required();
const { error: errorId } = schemaId.validate(id);
if (errorId) {
return res.status(400).send(errorId.details[0].message);
}
const schemaTarefa = Joi.object({
descricao: Joi.string().min(3),
concluida: Joi.boolean(),
}).min(1);
const { error: errorTarefa } = schemaTarefa.validate(req.body);
if (errorTarefa) {
return res.status(400).send(errorTarefa.details[0].message);
}
const tarefaAtualizada = { id: parseInt(id), ...req.body };
const sucesso = tarefaModel.atualizar(parseInt(id), tarefaAtualizada);
if (!sucesso) {
return res.status(404).send('Tarefa não encontrada');
}
res.send(tarefaAtualizada);
});
// Operação de Excluir
app.delete('/tarefas/:id', (req, res) => {
const { id } = req.params;
const schema = Joi.number().integer().positive().required();
const { error } = schema.validate(id);
if (error) {
return res.status(400).send(error.details[0].message);
}
const sucesso = tarefaModel.excluir(parseInt(id));
if (!sucesso) {
return res.status(404).send('Tarefa não encontrada');
}
res.send('Tarefa excluída com sucesso');
});
app.listen(3000, () => {
console.log('Servidor iniciado na porta 3000');
});