import { Router } from "express";
import { authenticate } from "../../middlewares/auth.middleware";
import { authorize } from "../../middlewares/rbac.middleware";
import { validate } from "../../middlewares/validate.middleware";
import {
  ProductCodeParamSchema,
  ProductIdParamSchema,
  ProductListQuerySchema,
} from "./products.schema";
import { productController } from "./products.controller";

const router = Router();

router.get(
  "/",
  authenticate,
  authorize("admin", "api_reader", "external"),
  validate(ProductListQuerySchema, "query"),
  productController.list,
);

router.get(
  "/code/:code",
  authenticate,
  authorize("admin", "api_reader", "external"),
  validate(ProductCodeParamSchema, "params"),
  productController.getByCode,
);

router.get(
  "/:id",
  authenticate,
  authorize("admin", "api_reader", "external"),
  validate(ProductIdParamSchema, "params"),
  productController.getById,
);

export default router;
