Skip to content

Commit 4351c87

Browse files
committed
@amandioca | feat: adiciona endpoint post user e metodo createUser
1 parent 93fe15e commit 4351c87

File tree

2 files changed

+42
-17
lines changed

2 files changed

+42
-17
lines changed

backend/dbService.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,34 @@ async function getUsers() {
2222
try {
2323
const result = await client.query('SELECT * FROM users');
2424
return result.rows;
25-
} catch (err) {
26-
console.error('Error fetching users: ', err);
27-
throw new Error('Error fetching users from database');
25+
} catch (error) {
26+
console.error('Error fetching users: ', error);
27+
throw error;
2828
}
2929
}
3030

3131
async function getUserByCpf(cpf) {
3232
try {
3333
const result = await client.query('SELECT * FROM users WHERE cpf = $1', [cpf]);
34-
console.log(result.rows)
3534
return result.rows;
36-
} catch (err) {
37-
console.error('Error fetching user by CPF: ', err);
38-
throw new Error('Error fetching users from database');
35+
} catch (error) {
36+
console.error('Error fetching user by CPF: ', error);
37+
throw error;
38+
}
39+
}
40+
41+
async function createUser(cpf, fullName, password) {
42+
try {
43+
const result = await client.query('INSERT INTO users (cpf, full_name, password) VALUES ($1, $2, $3) RETURNING *', [cpf, fullName, password])
44+
return result.rows[0];
45+
} catch (error) {
46+
console.error('Error creating user in database: ', error);
47+
throw error;
3948
}
4049
}
4150

4251
module.exports = {
4352
getUsers,
4453
getUserByCpf,
54+
createUser,
4555
}

backend/index.js

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
require('dotenv').config();
44
const express = require('express');
55
const dbService = require('./dbService');
6-
76
const app = express();
87
app.use(express.json());
98

@@ -14,25 +13,41 @@ app.listen(PORT, () => {
1413
});
1514

1615
app.get('/hello-world', (req, res) => {
17-
res.send({'message':'hello world!'})
16+
res.send({ message: 'hello world!' })
1817
});
1918

20-
app.get('/users', async (req, res) =>{
19+
app.get('/users', async (req, res) => {
2120
try {
2221
const data = await dbService.getUsers();
2322
res.json(data);
24-
} catch (err) {
25-
res.status(500).json({'message':'Connection to the SQL server failed'})
23+
} catch (error) {
24+
res.status(500).json({ message: 'Connection to the SQL server failed' })
2625
}
2726
});
2827

29-
app.get('/users/:cpf', async (req, res) =>{
28+
app.get('/users/:cpf', async (req, res) => {
3029
try {
3130
const user = await dbService.getUserByCpf(req.params.cpf);
3231
user.length === 1
3332
? res.json(user)
34-
: res.status(404).send({'message':'User not found'});
35-
} catch (err) {
36-
res.status(500).json({'message':'Connection to the SQL server failed'})
33+
: res.status(404);
34+
} catch (error) {
35+
res.status(500).json({ message: 'Connection to the SQL server failed' })
36+
}
37+
});
38+
39+
app.post('/users', async (req, res) => {
40+
const { cpf, fullName, password } = req.body;
41+
try {
42+
const createdUser = await dbService.createUser(cpf, fullName, password);
43+
const { password: _, ...userData } = createdUser;
44+
res.status(201).send(userData)
45+
} catch (error) {
46+
if (error.code === '23505')
47+
res.status(409).send({ message: 'User with this CPF already exists' });
48+
else if (error.code === '22001')
49+
res.status(400).send({ message: error.message });
50+
else
51+
res.status(500).send({ message: error.message })
3752
}
38-
});
53+
})

0 commit comments

Comments
 (0)