mirror of
https://github.com/andwati/order-service.git
synced 2026-11-11 20:45:12 +00:00
130 lines
2.7 KiB
TypeScript
130 lines
2.7 KiB
TypeScript
import { Router } from "express";
|
|
import { OrderController } from "../controllers/order.controller.js";
|
|
import { authMiddleware } from "../middleware/auth.middleware.js";
|
|
import { requireRole } from "../middleware/role.middleware.js";
|
|
import { validate } from "../middleware/validate.middleware.js";
|
|
import {
|
|
createOrderSchema,
|
|
orderIdParamSchema,
|
|
} from "../validation/order.schema.js";
|
|
|
|
const router: Router = Router();
|
|
|
|
/**
|
|
* @openapi
|
|
* /orders:
|
|
* post:
|
|
* tags:
|
|
* - Orders
|
|
* summary: Create a new order
|
|
* security:
|
|
* - BearerAuth: []
|
|
* requestBody:
|
|
* required: true
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* items:
|
|
* type: array
|
|
* items:
|
|
* type: object
|
|
* properties:
|
|
* productId:
|
|
* type: string
|
|
* quantity:
|
|
* type: number
|
|
* responses:
|
|
* 201:
|
|
* description: Order created
|
|
* 400:
|
|
* description: Invalid input
|
|
*/
|
|
router.post(
|
|
"/",
|
|
authMiddleware,
|
|
requireRole(["customer", "admin"]),
|
|
validate(createOrderSchema),
|
|
OrderController.create,
|
|
);
|
|
|
|
/**
|
|
* @openapi
|
|
* /orders:
|
|
* get:
|
|
* tags:
|
|
* - Orders
|
|
* summary: List my orders
|
|
* security:
|
|
* - BearerAuth: []
|
|
* responses:
|
|
* 200:
|
|
* description: List of orders
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: array
|
|
* items:
|
|
* $ref: '#/components/schemas/Order'
|
|
*/
|
|
router.get("/", authMiddleware, OrderController.list);
|
|
|
|
/**
|
|
* @openapi
|
|
* /orders/{id}/pay:
|
|
* post:
|
|
* tags:
|
|
* - Orders
|
|
* summary: Pay for an order
|
|
* security:
|
|
* - BearerAuth: []
|
|
* parameters:
|
|
* - in: path
|
|
* name: id
|
|
* required: true
|
|
* schema:
|
|
* type: string
|
|
* responses:
|
|
* 200:
|
|
* description: Order paid
|
|
* 404:
|
|
* description: Order not found
|
|
*/
|
|
router.post(
|
|
"/:id/pay",
|
|
authMiddleware,
|
|
validate(orderIdParamSchema),
|
|
OrderController.pay,
|
|
);
|
|
|
|
/**
|
|
* @openapi
|
|
* /orders/{id}/cancel:
|
|
* post:
|
|
* tags:
|
|
* - Orders
|
|
* summary: Cancel an order
|
|
* security:
|
|
* - BearerAuth: []
|
|
* parameters:
|
|
* - in: path
|
|
* name: id
|
|
* required: true
|
|
* schema:
|
|
* type: string
|
|
* responses:
|
|
* 200:
|
|
* description: Order cancelled
|
|
* 404:
|
|
* description: Order not found
|
|
*/
|
|
router.post(
|
|
"/:id/cancel",
|
|
authMiddleware,
|
|
validate(orderIdParamSchema),
|
|
OrderController.cancel,
|
|
);
|
|
|
|
export default router;
|