Skip to content

Commit df5f5e2

Browse files
author
Victor
committed
feat: add methods to create a user
1 parent fd2f27f commit df5f5e2

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

src/controllers/UserController.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@ class UserController {
88
}
99

1010
async create(request, response) {
11-
const { name, email } = req.body;
11+
const { name, email } = request.body;
12+
const user = await User.create({ name, email });
13+
14+
return response.status(201).json(user);
1215
}
1316

1417
async update(request, response) {
15-
const { id } = req.params;
16-
const { name, email } = req.body;
18+
const { id } = request.params;
19+
const { name, email } = request.body;
1720
}
1821

1922
async delete(request, response) {
20-
const { id } = req.params;
23+
const { id } = request.params;
2124
}
2225
}
2326

src/models/User.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,29 @@ class User {
99
return users;
1010
}
1111

12-
async create() {
12+
async create(data) {
13+
const fields = [];
14+
const values = [];
1315

16+
Object.keys(data).forEach(field => {
17+
fields.push(field);
18+
19+
if (data[field] !== null) {
20+
if (Array.isArray(data[field])) {
21+
const newArray = data[field].map(item => `'${item}'`);
22+
23+
values.push(`ARRAY[${newArray}]`);
24+
} else
25+
values.push(`'${data[field]}'`);
26+
} else
27+
values.push('null');
28+
});
29+
30+
const query = `INSERT INTO users (${fields.join(', ')}) VALUES (${values.join(', ')}) RETURNING *`;
31+
const result = await database.query(query);
32+
const user = result.rows[0];
33+
34+
return user;
1435
}
1536

1637
async update() {

0 commit comments

Comments
 (0)