import express from "express"; import { authenticateToken } from "../middleware/authMiddleware"; import { getScreens, getScreen, createScreen, updateScreen, deleteScreen, checkScreenDependencies, restoreScreen, permanentDeleteScreen, getDeletedScreens, bulkPermanentDeleteScreens, copyScreen, getTables, getTableInfo, getTableColumns, saveLayout, getLayout, generateScreenCode, assignScreenToMenu, getScreensByMenu, unassignScreenFromMenu, cleanupDeletedScreenMenuAssignments, } from "../controllers/screenManagementController"; const router = express.Router(); // 모든 라우트에 인증 미들웨어 적용 router.use(authenticateToken); // 화면 관리 router.get("/screens", getScreens); router.get("/screens/:id", getScreen); router.post("/screens", createScreen); router.put("/screens/:id", updateScreen); router.get("/screens/:id/dependencies", checkScreenDependencies); // 의존성 체크 router.delete("/screens/:id", deleteScreen); // 휴지통으로 이동 router.post("/screens/:id/copy", copyScreen); // 휴지통 관리 router.get("/screens/trash/list", getDeletedScreens); // 휴지통 화면 목록 router.post("/screens/:id/restore", restoreScreen); // 휴지통에서 복원 router.delete("/screens/:id/permanent", permanentDeleteScreen); // 영구 삭제 router.delete("/screens/trash/bulk", bulkPermanentDeleteScreens); // 일괄 영구 삭제 // 화면 코드 자동 생성 router.get("/generate-screen-code/:companyCode", generateScreenCode); // 테이블 관리 router.get("/tables", getTables); router.get("/tables/:tableName", getTableInfo); // 특정 테이블 정보 조회 (최적화) router.get("/tables/:tableName/columns", getTableColumns); // 레이아웃 관리 router.post("/screens/:screenId/layout", saveLayout); router.get("/screens/:screenId/layout", getLayout); // 메뉴-화면 할당 관리 router.post("/screens/:screenId/assign-menu", assignScreenToMenu); router.get("/menus/:menuObjid/screens", getScreensByMenu); router.delete("/screens/:screenId/menus/:menuObjid", unassignScreenFromMenu); // 관리자용 정리 기능 router.post( "/admin/cleanup-deleted-screen-menu-assignments", cleanupDeletedScreenMenuAssignments ); export default router;