northwind-rest-api
Version:
Local REST API Exposing 'Northwind Traders' Database.
100 lines (83 loc) • 2.73 kB
JavaScript
const express = require("express");
const Employee = require("../models/employee");
const employeesLogic = require("../business-logic/employees-logic");
const router = express.Router();
// Get all employees:
router.get("/employees", async (request, response) => {
try {
// Logic:
const employees = await employeesLogic.getAllEmployees();
// Success:
response.json(employees);
}
catch (err) {
response.status(500).send(err.message);
}
});
// Get one employee:
router.get("/employees/:id([0-9]+)", async (request, response) => {
try {
// Data:
const id = +request.params.id;
// Logic:
const employee = await employeesLogic.getOneEmployee(id);
if(!employee) return response.status(404).send(`id ${id} not found.`);
// Success:
response.json(employee);
}
catch (err) {
response.status(500).send(err.message);
}
});
// Add employee:
router.post("/employees", async (request, response) => {
try {
// Data:
const employee = new Employee(request.body);
// Validation:
const errors = employee.validate();
if (errors) return response.status(400).send(errors);
// Logic:
const addedEmployee = await employeesLogic.addEmployee(employee, request.files?.image);
// Success:
response.status(201).json(addedEmployee);
}
catch (err) {
response.status(500).send(err.message);
}
});
// Update employee:
router.put("/employees/:id([0-9]+)", async (request, response) => {
try {
// Data:
const id = +request.params.id;
request.body.id = id;
const employee = new Employee(request.body);
// Validation:
const errors = employee.validate();
if (errors) return response.status(400).send(errors);
// Logic:
const updatedEmployee = await employeesLogic.updateEmployee(employee, request.files?.image);
if(!updatedEmployee) return response.status(404).send(`id ${id} not found.`);
// Success:
response.json(updatedEmployee);
}
catch (err) {
response.status(500).send(err.message);
}
});
// Delete employee:
router.delete("/employees/:id([0-9]+)", async (request, response) => {
try {
// Data:
const id = +request.params.id;
// Logic:
await employeesLogic.deleteEmployee(id);
// Success:
response.sendStatus(204);
}
catch (err) {
response.status(500).send(err.message);
}
});
module.exports = router;