Skip to content

Commit 665710e

Browse files
committed
Add error handler
1 parent b2a3bc4 commit 665710e

File tree

5 files changed

+58
-32
lines changed

5 files changed

+58
-32
lines changed

src/app.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@ app.use((req, res, next) => {
2020
});
2121

2222
// error handler
23-
app.use((err, req, res) => {
24-
console.log(err);
25-
// set locals, only providing error in development
26-
res.locals.message = err.message;
27-
res.locals.error = req.app.get('env') === 'development' ? err : {};
28-
29-
// render the error page
23+
app.use((err, req, res, next) => {
24+
if (!err) {
25+
return next();
26+
}
3027
res.status(err.status || 500);
31-
res.render('error');
28+
res.send({ message: err.message });
29+
return res;
3230
});
3331

3432
module.exports = app;

src/controller/employeesController.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,25 @@ const express = require('express');
22

33
const router = express.Router();
44
const employeeService = require('../service/employeeService');
5-
/* GET employees listing. */
5+
/* GET /employees - get list of all employees. */
66
router.get('/', (req, res) => res.json(employeeService.getAll()));
7-
// router.get('/:id', employeeService.ge)
87

8+
/* GET /employees/:id - get employee by employeeId */
9+
router.get('/:id', (req, res) => {
10+
const employeeId = req.params.id;
11+
return res.json(employeeService.getById(employeeId));
12+
});
13+
14+
/* POST /employees - create a new employee and add in db */
915
router.post('/', (req, res) => {
1016
const newEmployee = req.body;
1117
return res.json(employeeService.save(newEmployee));
1218
});
13-
router.delete('');
19+
20+
/* DELETE /employees/:id - delete an existing employee with id */
21+
router.delete('/:id', (req, res) => {
22+
const employeeId = req.params.id;
23+
return res.json(employeeService.getById(employeeId)); // todo convert to do
24+
});
1425

1526
module.exports = router;

src/repository/employees.js

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const employeesData = [{
2+
id: 'EMP_1',
3+
name: 'Mahesh',
4+
department: 'IT',
5+
}];
6+
function validateEmployee(employee) {
7+
if (!(employee.name && employee.department)) {
8+
throw new Error('Employee Name and department is required');
9+
}
10+
}
11+
function getAll() {
12+
return employeesData;
13+
}
14+
function save(employee) {
15+
validateEmployee(employee);
16+
const newEmployee = employee;
17+
newEmployee.id = `EMP_${employeesData.length + 1}`;
18+
employeesData.push(employee);
19+
return employee;
20+
}
21+
function getById(employeeId) {
22+
const employee = employeesData.filter(item => item.id === employeeId);
23+
if (employee.length === 0) {
24+
throw new Error(`Employee Resource with id: ${employeeId} not found`);
25+
}
26+
return employee;
27+
}
28+
29+
module.exports = {
30+
getAll,
31+
save,
32+
getById,
33+
};

src/service/employeeService.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
const employeeRepository = require('../repository/employees');
1+
const employeeRepository = require('../repository/employeesRepository');
22

33
function getAll() {
44
return employeeRepository.getAll();
55
}
66
function save(newEmployee) {
77
return employeeRepository.save(newEmployee);
88
}
9+
function getById(employeeId) {
10+
return employeeRepository.getById(employeeId);
11+
}
912

1013
module.exports = {
1114
getAll,
15+
getById,
1216
save,
1317
};

0 commit comments

Comments
 (0)