forked from paulosalvatore/ocean-backend-nuvem-24-09-2021
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
144 lines (106 loc) · 3.45 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
134
135
136
137
138
139
140
141
142
143
144
const { MongoClient, ObjectId } = require("mongodb");
const express = require("express");
const app = express();
(async () => {
const url = "mongodb+srv://admin:D4f'6c9Sh!QeL8C64Bby@cluster0.cg79y.mongodb.net/";
const dbName = "ocean_bancodados_24_09_2021";
const client = await MongoClient.connect(url);
const db = client.db(dbName);
const collection = db.collection("personagens");
// Sinalizamos para o Express que todo body da requisição
// estará estruturado em JSON
app.use(express.json());
app.get("/", function (req, res) {
res.send("Hello, World!");
});
// CRUD -> Create, Read (All & Single/byId), Update, Delete
// "CRUD em memória"
// Lista de textos (strings)
const lista = [
{
id: 1,
nome: "Rick Sanchez",
},
{
id: 2,
nome: "Morty Smith",
},
];
// [GET] /personagens
// Read All
app.get("/personagens", async function (req, res) {
const listaPersonagens = await collection.find().toArray();
res.send(listaPersonagens);
});
function findById(id) {
return collection.findOne({ _id: new ObjectId(id) });
}
// [GET] /personagens/:id
// Read By Id
app.get("/personagens/:id", async function (req, res) {
const id = req.params.id;
const item = await findById(id);
if (!item) {
res.status(404).send("Personagem não encontrado.");
return;
}
res.send(item);
});
// [POST] /personagens
// Create
app.post("/personagens", async function (req, res) {
// Obtém o corpo da requisição e coloca na variável item
const item = req.body;
if (!item || !item.nome) {
res.status(400).send(
"Chave 'nome' não foi encontrada no corpo da requisição."
);
return;
}
await collection.insertOne(item);
res.status(201).send(item);
});
// [PUT] /personagens/:id
// Update
app.put("/personagens/:id", async function (req, res) {
/*
Objetivo: Atualizar uma personagem
Passos:
- Pegar o ID dessa personagem
- Pegar a nova informação que eu quero atualizar
- Atualizar essa nova informação na lista de personagens
- Exibir que deu certo
*/
const id = req.params.id;
const itemEncontrado = await findById(id);
if (!itemEncontrado) {
res.status(404).send("Personagem não encontrado.");
return;
}
const novoItem = req.body;
if (!novoItem || !novoItem.nome) {
res.status(400).send(
"Chave 'nome' não foi encontrada no corpo da requisição."
);
return;
}
await collection.updateOne(
{ _id: new ObjectId(id) },
{ $set: novoItem }
);
res.send(novoItem);
});
// [DELETE] /personagens/:id
// Delete
app.delete("/personagens/:id", async function (req, res) {
const id = req.params.id;
const itemEncontrado = await findById(id);
if (!itemEncontrado) {
res.status(404).send("Personagem não encontrado.");
return;
}
await collection.deleteOne({ _id: new ObjectId(id) });
res.send("Personagem removida com sucesso!");
});
app.listen(process.env.PORT || 3000);
})();