import { Router } from "express";
import { FoodController } from "./food.controller";
import { FoodService } from "./food.service";
import { validateRequest } from "@middlewares/validation.middleware";
import { CreateFoodSchema, UpdateFoodSchema } from "./dto/food.dto";
import { upload } from "@provider/multer.provider";
import { authenticateToken } from "@middlewares/auth.middleware";

export class FoodRoute {
    public router: Router;
    private foodController: FoodController;

    constructor() {
        this.router = Router();
        this.foodController = new FoodController(new FoodService());
        this.initializeRoutes();
    }

    private initializeRoutes() {
        this.router.post(
            "/",
            authenticateToken,
            upload.array("images", 5),
            validateRequest(CreateFoodSchema),
            this.foodController.create
        );
        this.router.get("/", this.foodController.findAll);
        this.router.get("/:id", this.foodController.findOne);
        this.router.put(
            "/:id",
            upload.array("images", 5),
            validateRequest(UpdateFoodSchema),
            this.foodController.update
        );
        this.router.delete("/:id", this.foodController.delete);
    }
}
