import express from "express"; import { ScreenManagementController } from "../controllers/screenManagementController"; import { authenticateToken } from "../middleware/authMiddleware"; const router = express.Router(); const screenController = new ScreenManagementController(); // 모든 라우트에 인증 미들웨어 적용 router.use(authenticateToken); // ======================================== // 화면 정의 관리 // ======================================== /** * @route POST /screens * @desc 새 화면 생성 * @access Private */ router.post("/screens", screenController.createScreen.bind(screenController)); /** * @route GET /screens * @desc 회사별 화면 목록 조회 * @access Private */ router.get("/screens", screenController.getScreens.bind(screenController)); /** * @route GET /screens/:screenId * @desc 특정 화면 조회 * @access Private */ router.get( "/screens/:screenId", screenController.getScreen.bind(screenController) ); /** * @route PUT /screens/:screenId * @desc 화면 정보 수정 * @access Private */ router.put( "/screens/:screenId", screenController.updateScreen.bind(screenController) ); /** * @route DELETE /screens/:screenId * @desc 화면 삭제 * @access Private */ router.delete( "/screens/:screenId", screenController.deleteScreen.bind(screenController) ); // ======================================== // 레이아웃 관리 // ======================================== /** * @route GET /screens/:screenId/layout * @desc 화면 레이아웃 조회 * @access Private */ router.get( "/screens/:screenId/layout", screenController.getLayout.bind(screenController) ); /** * @route POST /screens/:screenId/layout * @desc 화면 레이아웃 저장 * @access Private */ router.post( "/screens/:screenId/layout", screenController.saveLayout.bind(screenController) ); // ======================================== // 템플릿 관리 // ======================================== /** * @route GET /templates * @desc 회사별 템플릿 목록 조회 * @access Private */ router.get("/templates", screenController.getTemplates.bind(screenController)); /** * @route POST /templates * @desc 새 템플릿 생성 * @access Private */ router.post( "/templates", screenController.createTemplate.bind(screenController) ); // ======================================== // 메뉴 할당 관리 // ======================================== /** * @route POST /screens/:screenId/menu-assignments * @desc 화면을 메뉴에 할당 * @access Private */ router.post( "/screens/:screenId/menu-assignments", screenController.assignScreenToMenu.bind(screenController) ); /** * @route GET /menus/:menuObjid/screens * @desc 메뉴별 할당된 화면 목록 조회 * @access Private */ router.get( "/menus/:menuObjid/screens", screenController.getScreensByMenu.bind(screenController) ); // ======================================== // 테이블 타입 연계 // ======================================== /** * @route GET /tables * @desc 사용 가능한 테이블 목록 조회 * @access Private */ router.get("/tables", screenController.getTables.bind(screenController)); /** * @route GET /tables/:tableName/columns * @desc 테이블의 컬럼 정보 조회 * @access Private */ router.get( "/tables/:tableName/columns", screenController.getTableColumns.bind(screenController) ); /** * @route PUT /tables/:tableName/columns/:columnName/web-type * @desc 컬럼의 웹 타입 설정 * @access Private */ router.put( "/tables/:tableName/columns/:columnName/web-type", screenController.setColumnWebType.bind(screenController) ); export default router;