import { Router } from "express"; import { getCategoryColumns, getCategoryValues, addCategoryValue, updateCategoryValue, deleteCategoryValue, bulkDeleteCategoryValues, reorderCategoryValues, getColumnMapping, createColumnMapping, getLogicalColumns, deleteColumnMapping, deleteColumnMappingsByColumn, getSecondLevelMenus, getCategoryLabelsByCodes, } from "../controllers/tableCategoryValueController"; import { authenticateToken } from "../middleware/authMiddleware"; const router = Router(); // 모든 라우트에 인증 미들웨어 적용 router.use(authenticateToken); // 테이블의 카테고리 컬럼 목록 조회 router.get("/:tableName/columns", getCategoryColumns); // 카테고리 값 목록 조회 router.get("/:tableName/:columnName/values", getCategoryValues); // 카테고리 값 추가 router.post("/values", addCategoryValue); // 카테고리 값 수정 router.put("/values/:valueId", updateCategoryValue); // 카테고리 값 삭제 router.delete("/values/:valueId", deleteCategoryValue); // 카테고리 값 일괄 삭제 router.post("/values/bulk-delete", bulkDeleteCategoryValues); // 카테고리 값 순서 변경 router.post("/values/reorder", reorderCategoryValues); // 카테고리 코드로 라벨 조회 router.post("/labels-by-codes", getCategoryLabelsByCodes); // ================================================ // 컬럼 매핑 관련 라우트 (논리명 ↔ 물리명) // ================================================ // 2레벨 메뉴 목록 조회 (메뉴 선택용) router.get("/second-level-menus", getSecondLevelMenus); // 컬럼 매핑 조회 router.get("/column-mapping/:tableName/:menuObjid", getColumnMapping); // 논리적 컬럼 목록 조회 router.get("/logical-columns/:tableName/:menuObjid", getLogicalColumns); // 컬럼 매핑 생성/수정 router.post("/column-mapping", createColumnMapping); // 테이블+컬럼 기준 매핑 삭제 (메뉴 선택 변경 시 기존 매핑 모두 삭제용) // 주의: 더 구체적인 라우트가 먼저 와야 함 (3개 세그먼트 > 1개 세그먼트) router.delete("/column-mapping/:tableName/:columnName/all", deleteColumnMappingsByColumn); // 컬럼 매핑 삭제 (단일) router.delete("/column-mapping/:mappingId", deleteColumnMapping); export default router;