Skip to content

Commit 33ef1f9

Browse files
Praticando NOdeJS
0 parents  commit 33ef1f9

File tree

4 files changed

+117
-0
lines changed

4 files changed

+117
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+
yarn.lock

insomnia

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit aee9add9d208142b1813d789917c6bd62b8fb4bf

package.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "backend",
3+
"version": "1.0.0",
4+
"main": "src/index.js",
5+
"license": "MIT",
6+
"scripts": {
7+
"dev": "nodemon"
8+
},
9+
"dependencies": {
10+
"express": "^4.17.1",
11+
"uuidv4": "^6.2.3"
12+
},
13+
"devDependencies": {
14+
"nodemon": "^2.0.4"
15+
}
16+
}

src/index.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
const express = require('express');
2+
const { uuid, isUuid } = require('uuidv4');
3+
4+
const app = express();
5+
6+
app.use(express.json());
7+
8+
const projects = [];
9+
10+
function logRequests(request, response, next) {
11+
const { method, url } = request;
12+
13+
const logLabel = `[${method.toUpperCase()}] ${url}`;
14+
15+
console.time(logLabel);
16+
17+
next();
18+
19+
console.timeEnd(logLabel)
20+
}
21+
22+
function validateProjectId(request, response, next) {
23+
const { id } = request.params;
24+
25+
if (!isUuid(id)) {
26+
return response.status(400).json({ error:'Invalid project ID' })
27+
}
28+
}
29+
30+
app.use(logRequests)
31+
app.use('/projects/:id', validateProjectId);
32+
33+
app.get('/projects', (request, response) =>{
34+
35+
const { title } = request.query;
36+
37+
const results = title
38+
39+
? projects.filter(project => project.title.includes(title))
40+
: projects;
41+
42+
43+
return response.json(results);
44+
});
45+
46+
app.post('/projects', (request, response) => {
47+
48+
const { title, owner } = request.body;
49+
50+
const project = { id: uuid(), title, owner }
51+
52+
projects.push(project);
53+
54+
55+
return response.json(project)
56+
})
57+
58+
app.put('/projects/:id', (request, response) => {
59+
60+
const { id } = request.params;
61+
const { title, owner } = request.body;
62+
63+
const projectIndex = projects.findIndex(project => project.id === id);
64+
65+
if (projectIndex < 0) {
66+
return response.status(400).json({ error: 'Project not found' })
67+
}
68+
69+
const project = {
70+
id,
71+
title,
72+
owner,
73+
}
74+
75+
projects[projectIndex] = project
76+
77+
return response.json(project)
78+
})
79+
80+
app.delete('/projects/:id', (request, response) => {
81+
82+
const { id } = request.params;
83+
84+
const projectIndex = projects.findIndex(project => project.id === id);
85+
86+
if (projectIndex < 0) {
87+
return response.status(400).json({ error: 'Project not found' })
88+
}
89+
90+
projects.splice(projectIndex, 1);
91+
92+
return response.status(200).send();
93+
})
94+
95+
96+
app.listen(3333, ()=> {
97+
console.log('🚀 back-end started!')
98+
});

0 commit comments

Comments
 (0)