UNPKG

northwind-rest-api

Version:

Local REST API Exposing Northwind Database.

102 lines (85 loc) 2.93 kB
const express = require("express"); const Category = require("../models/category"); const categoriesLogic = require("../business-logic/categories-logic"); const verifyToken = require("../middleware/verify-token"); const verifyAdmin = require("../middleware/verify-admin"); const router = express.Router(); // Get all categories: router.get("/categories", verifyToken, async (request, response) => { try { // Logic: const categories = await categoriesLogic.getAllCategories(); // Success: response.json(categories); } catch (err) { response.status(500).send(err.message); } }); // Get one category: router.get("/categories/:id([0-9]+)", verifyToken, async (request, response) => { try { // Data: const id = +request.params.id; // Logic: const category = await categoriesLogic.getOneCategory(id); if(!category) return response.status(404).send(`id ${id} not found.`); // Success: response.json(category); } catch (err) { response.status(500).send(err.message); } }); // Add category: router.post("/categories", verifyToken, async (request, response) => { try { // Data: const category = new Category(request.body); // Validation: const errors = category.validate(); if (errors) return response.status(400).send(errors); // Logic: const addedCategory = await categoriesLogic.addCategory(category, request.files?.image); // Success: response.status(201).json(addedCategory); } catch (err) { response.status(500).send(err.message); } }); // Update category: router.put("/categories/:id([0-9]+)", verifyToken, async (request, response) => { try { // Data: const id = +request.params.id; request.body.id = id; const category = new Category(request.body); // Validation: const errors = category.validate(); if (errors) return response.status(400).send(errors); // Logic: const updatedCategory = await categoriesLogic.updateCategory(category, request.files?.image); if(!updatedCategory) return response.status(404).send(`id ${id} not found.`); // Success: response.json(updatedCategory); } catch (err) { response.status(500).send(err.message); } }); // Delete category: router.delete("/categories/:id([0-9]+)", verifyAdmin, async (request, response) => { try { // Data: const id = +request.params.id; // Logic: await categoriesLogic.deleteCategory(id); // Success: response.sendStatus(204); } catch (err) { response.status(500).send(err.message); } }); module.exports = router;