import { Router } from "express";
import componentStandardController from "../controllers/componentStandardController";
import { authenticateToken } from "../middleware/authMiddleware";

const router = Router();

// 모든 라우트에 인증 미들웨어 적용
router.use(authenticateToken);

// 컴포넌트 목록 조회
router.get(
  "/",
  componentStandardController.getComponents.bind(componentStandardController)
);

// 카테고리 목록 조회
router.get(
  "/categories",
  componentStandardController.getCategories.bind(componentStandardController)
);

// 통계 조회
router.get(
  "/statistics",
  componentStandardController.getStatistics.bind(componentStandardController)
);

// 컴포넌트 코드 중복 체크
router.get(
  "/check-duplicate/:component_code",
  componentStandardController.checkDuplicate.bind(componentStandardController)
);

// 컴포넌트 상세 조회
router.get(
  "/:component_code",
  componentStandardController.getComponent.bind(componentStandardController)
);

// 컴포넌트 생성
router.post(
  "/",
  componentStandardController.createComponent.bind(componentStandardController)
);

// 컴포넌트 수정
router.put(
  "/:component_code",
  componentStandardController.updateComponent.bind(componentStandardController)
);

// 컴포넌트 삭제
router.delete(
  "/:component_code",
  componentStandardController.deleteComponent.bind(componentStandardController)
);

// 정렬 순서 업데이트
router.put(
  "/sort/order",
  componentStandardController.updateSortOrder.bind(componentStandardController)
);

// 컴포넌트 복제
router.post(
  "/duplicate",
  componentStandardController.duplicateComponent.bind(
    componentStandardController
  )
);

export default router;
