117 lines
4.2 KiB
TypeScript
117 lines
4.2 KiB
TypeScript
import express from "express";
|
|
import { authenticateToken } from "../middleware/authMiddleware";
|
|
import {
|
|
getScreens,
|
|
getScreen,
|
|
getScreenMenu,
|
|
createScreen,
|
|
updateScreen,
|
|
updateScreenInfo,
|
|
deleteScreen,
|
|
bulkDeleteScreens,
|
|
checkScreenDependencies,
|
|
restoreScreen,
|
|
permanentDeleteScreen,
|
|
getDeletedScreens,
|
|
bulkPermanentDeleteScreens,
|
|
detectLinkedScreens,
|
|
checkDuplicateScreenName,
|
|
copyScreen,
|
|
copyScreenWithModals,
|
|
getTables,
|
|
getTableInfo,
|
|
getTableColumns,
|
|
saveLayout,
|
|
getLayout,
|
|
getLayoutV1,
|
|
getLayoutV2,
|
|
saveLayoutV2,
|
|
generateScreenCode,
|
|
generateMultipleScreenCodes,
|
|
assignScreenToMenu,
|
|
getScreensByMenu,
|
|
unassignScreenFromMenu,
|
|
cleanupDeletedScreenMenuAssignments,
|
|
updateTabScreenReferences,
|
|
copyScreenMenuAssignments,
|
|
copyCodeCategoryAndCodes,
|
|
copyCategoryMapping,
|
|
copyTableTypeColumns,
|
|
copyCascadingRelation,
|
|
} from "../controllers/screenManagementController";
|
|
|
|
const router = express.Router();
|
|
|
|
// 모든 라우트에 인증 미들웨어 적용
|
|
router.use(authenticateToken);
|
|
|
|
// 화면 관리
|
|
router.get("/screens", getScreens);
|
|
router.get("/screens/:id", getScreen);
|
|
router.get("/screens/:id/menu", getScreenMenu); // 화면에 할당된 메뉴 조회
|
|
router.post("/screens", createScreen);
|
|
router.put("/screens/:id", updateScreen);
|
|
router.put("/screens/:id/info", updateScreenInfo); // 화면 정보만 수정
|
|
router.get("/screens/:id/dependencies", checkScreenDependencies); // 의존성 체크
|
|
router.delete("/screens/:id", deleteScreen); // 휴지통으로 이동
|
|
router.delete("/screens/bulk/delete", bulkDeleteScreens); // 활성 화면 일괄 삭제 (휴지통으로 이동)
|
|
router.get("/screens/:id/linked-modals", detectLinkedScreens); // 연결된 모달 화면 감지
|
|
router.post("/screens/check-duplicate-name", checkDuplicateScreenName); // 화면명 중복 체크
|
|
router.post("/screens/:id/copy", copyScreen); // 단일 화면 복사 (하위 호환용)
|
|
router.post("/screens/:id/copy-with-modals", copyScreenWithModals); // 메인 + 모달 일괄 복사
|
|
|
|
// 휴지통 관리
|
|
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.post("/generate-screen-codes", generateMultipleScreenCodes);
|
|
|
|
// 테이블 관리
|
|
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.get("/screens/:screenId/layout-v1", getLayoutV1); // V1: component_url + custom_config 기반 (다중 레코드)
|
|
router.get("/screens/:screenId/layout-v2", getLayoutV2); // V2: 1 레코드 방식 (url + overrides)
|
|
router.post("/screens/:screenId/layout-v2", saveLayoutV2); // V2: 1 레코드 방식 저장
|
|
|
|
// 메뉴-화면 할당 관리
|
|
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
|
|
);
|
|
|
|
// 그룹 복제 완료 후 탭 컴포넌트의 screenId 참조 일괄 업데이트
|
|
router.post("/screens/update-tab-references", updateTabScreenReferences);
|
|
|
|
// 화면-메뉴 할당 복제 (다른 회사로 복제 시)
|
|
router.post("/copy-menu-assignments", copyScreenMenuAssignments);
|
|
|
|
// 코드 카테고리 + 코드 복제
|
|
router.post("/copy-code-category", copyCodeCategoryAndCodes);
|
|
|
|
// 카테고리 매핑 + 값 복제
|
|
router.post("/copy-category-mapping", copyCategoryMapping);
|
|
|
|
// 테이블 타입 컬럼 복제
|
|
router.post("/copy-table-type-columns", copyTableTypeColumns);
|
|
|
|
// 연쇄관계 설정 복제
|
|
router.post("/copy-cascading-relation", copyCascadingRelation);
|
|
|
|
export default router;
|