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