Skip to content

Commit de2ee14

Browse files
committed
add api to get all users in database & api to check if user email exists
1 parent c0911b2 commit de2ee14

File tree

11 files changed

+267
-109
lines changed

11 files changed

+267
-109
lines changed

challenge-5-anhduy/cms-service/src/api/controllers/cms.controller.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ const ValidationService = require('../../services/validation.service');
22

33
module.exports = function CMSController() {
44
const validateUserData = async(req, res, next) => {
5-
try {
6-
const data = req.body;
5+
try {
6+
const data = req.body;
77
const validationService = new ValidationService();
8-
const error = await validationService.validateUserData(data);
9-
8+
const error = await validationService.validateUserData(data);
109
res.status(200).json({
1110
error
1211
});

challenge-5-anhduy/main-service/src/api/controllers/main.controller.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,29 @@ module.exports = function MainController() {
1212
//validate user data
1313
const validationClientService = new ValidationClientService();
1414
const { error } = await validationClientService.validateUser(data);
15-
15+
console.log("error: ", error);
1616
if (error) {
1717
throw new BadRequestError('User data is invalid');
1818
}
1919

20-
//call user service to register user
20+
//call user service to check if email exist
2121
const userClientService = new UserClientService();
22-
const response = await userClientService.registerUser(data);
23-
const result = response.result;
22+
let response = await userClientService.getUserByEmail(data.email);
23+
let result = response.result;
24+
if (result) {
25+
throw new BadRequestError('Email already exists !');
26+
}
27+
//call user service to check if email exist
28+
response = await userClientService.registerUser(data);
29+
result = response.result;
2430
res.status(201).json({ result });
25-
}
31+
} else if (op == 'getAll') {
32+
//call user service to get all users
33+
const userClientService = new UserClientService();
34+
const response = await userClientService.getAllUsers();
35+
const result = response.result;
36+
res.status(200).json({ result });
37+
}
2638
} catch (err) {
2739
next(err);
2840
}

challenge-5-anhduy/main-service/src/services/user-client.service.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,26 @@ UserClientService.prototype.registerUser = async function (data) {
1515
return response.data;
1616
};
1717

18+
UserClientService.prototype.getAllUsers = async function () {
19+
const config = {
20+
url: `${this.baseURL}/api/users`,
21+
method: 'GET',
22+
headers: { 'Content-Type': 'application/json' }
23+
};
24+
const response = await axios(config);
25+
return response.data;
26+
};
27+
28+
UserClientService.prototype.getUserByEmail = async function (email) {
29+
const config = {
30+
url: `${this.baseURL}/api/users/${email}`,
31+
method: 'GET',
32+
headers: { 'Content-Type': 'application/json' }
33+
};
34+
const response = await axios(config);
35+
return response.data;
36+
};
37+
1838

1939

2040
module.exports = UserClientService;

challenge-5-anhduy/user-service/package-lock.json

Lines changed: 140 additions & 81 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)