forked from paulosalvatore/ocean-jornada-backend-maio-2024
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
108 lines (81 loc) · 2.91 KB
/
index.js
File metadata and controls
108 lines (81 loc) · 2.91 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
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
require('dotenv').config()
const express = require('express')
const { MongoClient, ObjectId } = require('mongodb')
const dbUrl = process.env.DATABASE_URL
const dbName = 'ocean-jornada-backend-maio-2024'
const client = new MongoClient(dbUrl)
async function main() {
console.log('Conectando ao banco de dados...')
await client.connect()
console.log('Banco de dados conectado com sucesso!')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
// Desafio: criar uma rota [GET] /oi que retorna "Olá, mundo!"
app.get('/oi', function (req, res) {
res.send('Olá, mundo!')
})
// Lista de Itens
const itens = ['Rick Sanchez', 'Morty Smith', 'Summer Smith']
// 0 1 2
const db = client.db(dbName)
const collection = db.collection('item')
// Endpoint de Read All [GET] /item
app.get('/item', async function (req, res) {
// Acesso a lista de documentos na collection
const documentos = await collection.find().toArray()
// Envio os documentos como resposta
res.send(documentos)
})
// Endpoint de Read By ID [GET] /item/:id
app.get('/item/:id', async function (req, res) {
// Acessamos o parâmetro de rota ID
const id = req.params.id
// Acessamos o item na collection usando o ID
const item = await collection.findOne({ _id: new ObjectId(id) })
// Enviamos o item encontrado como resposta
res.send(item)
})
// Sinalizamos que todo corpo de requisição
// virá como JSON
app.use(express.json())
// Endpoint de Create [POST] /item
app.post('/item', function (req, res) {
// Acessamos o corpo da requisição
const body = req.body
// Acessar o item no corpo da requisição
const novoItem = body.nome
// Adicionar o novo item na collection
collection.insertOne({ nome: novoItem })
// Enviar uma mensagem de sucesso
res.send('Item adicionado com sucesso: ' + novoItem)
})
// Endpoint de Update [PUT] /item/:id
app.put('/item/:id', async function (req, res) {
// Acessar o ID do parâmetro de rota
const id = req.params.id
// Acessar o item a ser atualizado, a partir do
// corpo da requisição
const body = req.body
const atualizarItem = body.nome
// Atualizar na collection o item recebido
await collection.updateOne(
{ _id: new ObjectId(id) },
{ $set: { nome: atualizarItem } }
)
// Enviamos uma mensagem de sucesso
res.send('Item atualizado com sucesso: ' + id + ', ' + atualizarItem)
})
// Endpoint de Delete [DELETE] /item/:id
app.delete('/item/:id', async function (req, res) {
// Acessar o parâmetro de rota ID
const id = req.params.id
// Executa a operação de exclusão desse item na collection
await collection.deleteOne({ _id: new ObjectId(id) })
// Enviamos uma mensagem de sucesso
res.send('Item removido com sucesso: ' + id)
})
app.listen(3000)
}
main()