화면관리 중간 커밋

This commit is contained in:
kjs
2025-09-01 11:48:12 +09:00
parent 6c29c68d10
commit 42dbfd98f8
40 changed files with 5833 additions and 52 deletions

View File

@@ -0,0 +1,159 @@
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;

View File

@@ -7,6 +7,7 @@ import {
updateAllColumnSettings,
getTableLabels,
getColumnLabels,
updateColumnWebType,
} from "../controllers/tableManagementController";
const router = express.Router();
@@ -53,4 +54,13 @@ router.get("/tables/:tableName/labels", getTableLabels);
*/
router.get("/tables/:tableName/columns/:columnName/labels", getColumnLabels);
/**
* 컬럼 웹 타입 설정
* PUT /api/table-management/tables/:tableName/columns/:columnName/web-type
*/
router.put(
"/tables/:tableName/columns/:columnName/web-type",
updateColumnWebType
);
export default router;