-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
133 lines (94 loc) · 3.34 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
const express = require('express')
const uuid = require('uuid')
const app = express()
app.use(express.json())
const port = 3001
const orders = [] // Armazena os pedidos
/* MIDDLEWARE CHECK - Vai receber o ID e verificar se ele existe.
Caso não existir vai enviar uma mensagem de erro, mas se existir a requisição será continuada. */
const checkOrder = (request, response, next) => {
const { id } = request.params
const index = orders.findIndex(order => order.id === id)
if (index < 0){
return response.status(404).json({ error: "User not found" })
}
request.orderIndex = index
request.orderId = id
next()
}
/* MIDDLEWARE METHOD - Ele mostra o método da requisiçao(GET,POST,PUT,DELETE, etc) e também a url da requisição. */
const method = (request, response, next) => {
const method = request.method
const url = request.path
console.log("Method:", "[", method, "]", "-", "URL:", url)
next()
}
// GET /order: Rota que lista todos os pedidos já feitos.
app.get('/order', method, (request, response) => {
return response.status(200).json(orders)
})
// GET /order/:id: Essa rota recebe o id nos parâmetros e retorna um pedido específico.
app.get('/order/:id', checkOrder, (request, response) => {
const index = request.orderIndex
orderSpecific = orders[index]
return response.json(orderSpecific)
})
// POST /order: A rota recebe o pedido do cliente, o nome do cliente e o valor do pedido, elas são passadas dentro do corpo(body) da requisição, e são colocadas dentro de um array.
app.post('/order', method, (request, response) => {
const { list, clientName, price } = request.body;
const orderList = {
id: uuid.v4(),
list,
clientName,
price,
status: "Em preparação"
}
orders.push(orderList)
return response.status(201).json(orderList)
})
// PUT /order/:id: Essa rota altera um pedido já feito.
app.put('/order/:id', checkOrder, method, (request, response) => {
const id = request.orderId
const { list, clientName, price } = request.body;
const userChange = {
id,
list,
clientName,
price,
status: "EM PREPARAÇÃO"
}
const index = request.orderIndex
orders[index] = userChange
return response.status(200).json(userChange)
})
// DELETE /order/:id: Essa rota deleta um pedido já feito com o id enviado nos parâmetros da rota.
app.delete('/order/:id', checkOrder, method, (request, response) => {
const index = request.orderIndex
orders.splice(index, 1)
return response.status(204).json()
})
// PATCH /order/:id: Essa rota recebe o id nos parâmetros e assim que ela for chamada, altera o status do pedido recebido pelo id para "Pronto".
app.patch('/order/:id', checkOrder, method, (request, response) => {
const index = request.orderIndex
const { id, list, clientName, price } = orders[index]
const changeOrderStatus = {
id,
list,
clientName,
price,
status: "PRONTO"
}
orders[index] = changeOrderStatus
return response.json(changeOrderStatus)
})
app.listen(port, () =>{
console.log(`🚀 Server started on port ${port}`)
})
/*
Pedido pronto para facilitar.
{
"order": "Cheeseburguer, Balde de nugget, 1 Água",
"clientName": "Francisco",
"price": 37.5
}
*/