Skip to content

src/routers/orders.ts โ€‹

From HW1: SliceDrop API ยท original: si-679-f-26-hw1-jessicadonoho/src/routers/orders.ts ยท all files in this project

ts
import { Request, Response, Router } from "express";
import { addOrder, listOrders } from "../data/orders";
import { requireCustomerToken, requireStaffToken } from "../middleware/auth";
import { validateOrder } from "../validation/validate-order";

// TODO: POST /orders  -- check the customer token BEFORE you look at the body.
//                        Then validate it: respond 400 with the problems if it
//                        is invalid, otherwise store it and respond 201 with
//                        the order. A request with no token never reaches
//                        validation, however bad its body is.
// TODO: GET /orders   -- staff token required. Supports ?status= filtering.

export const ordersRouter = Router();

ordersRouter.post("/", requireCustomerToken, (req:Request, res:Response)=>{
    const problems=validateOrder(req.body);
    if (problems.length>0){
        res.status(400).json({ errors: problems })
    } else{
        const order=addOrder(req.body)
        res.status(201).json(order)
    }
})

ordersRouter.get("/", requireStaffToken, (req, res) => {
    const status = typeof req.query.status === "string" ? req.query.status : undefined;
    res.json(listOrders(status))
});