ERP-node/backend-node/src/routes/tableManagementRoutes.ts

152 lines
3.9 KiB
TypeScript

import express from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import {
getTableList,
getColumnList,
updateColumnSettings,
updateAllColumnSettings,
getTableLabels,
getColumnLabels,
updateColumnWebType,
updateColumnInputType,
updateTableLabel,
getTableData,
addTableData,
editTableData,
deleteTableData,
getTableSchema,
checkTableExists,
getColumnWebTypes,
checkDatabaseConnection,
} from "../controllers/tableManagementController";
const router = express.Router();
// 모든 라우트에 인증 미들웨어 적용 (테스트 시에는 주석 처리)
// router.use(authenticateToken);
/**
* 테이블 목록 조회
* GET /api/table-management/tables
*/
router.get("/tables", getTableList);
/**
* 테이블 컬럼 정보 조회
* GET /api/table-management/tables/:tableName/columns
*/
router.get("/tables/:tableName/columns", getColumnList);
/**
* 테이블 라벨 설정
* PUT /api/table-management/tables/:tableName/label
*/
router.put("/tables/:tableName/label", updateTableLabel);
/**
* 개별 컬럼 설정 업데이트
* POST /api/table-management/tables/:tableName/columns/:columnName/settings
*/
router.post(
"/tables/:tableName/columns/:columnName/settings",
updateColumnSettings
);
/**
* 전체 컬럼 설정 일괄 업데이트
* POST /api/table-management/tables/:tableName/columns/settings
*/
router.post("/tables/:tableName/columns/settings", updateAllColumnSettings);
/**
* 테이블 라벨 정보 조회
* GET /api/table-management/tables/:tableName/labels
*/
router.get("/tables/:tableName/labels", getTableLabels);
/**
* 컬럼 라벨 정보 조회
* GET /api/table-management/tables/:tableName/columns/:columnName/labels
*/
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
);
/**
* 컬럼 입력 타입 설정 (새로운 시스템)
* PUT /api/table-management/tables/:tableName/columns/:columnName/input-type
*/
router.put(
"/tables/:tableName/columns/:columnName/input-type",
updateColumnInputType
);
/**
* 개별 컬럼 설정 업데이트 (PUT 방식)
* PUT /api/table-management/tables/:tableName/columns/:columnName
*/
router.put("/tables/:tableName/columns/:columnName", updateColumnSettings);
/**
* 여러 컬럼 설정 일괄 업데이트
* PUT /api/table-management/tables/:tableName/columns/batch
*/
router.put("/tables/:tableName/columns/batch", updateAllColumnSettings);
/**
* 테이블 스키마 정보 조회 (컬럼 존재 여부 검증용)
* GET /api/table-management/tables/:tableName/schema
*/
router.get("/tables/:tableName/schema", getTableSchema);
/**
* 테이블 존재 여부 확인
* GET /api/table-management/tables/:tableName/exists
*/
router.get("/tables/:tableName/exists", checkTableExists);
/**
* 컬럼 웹타입 정보 조회 (화면관리 연동용)
* GET /api/table-management/tables/:tableName/web-types
*/
router.get("/tables/:tableName/web-types", getColumnWebTypes);
/**
* 데이터베이스 연결 상태 확인
* GET /api/table-management/health
*/
router.get("/health", checkDatabaseConnection);
/**
* 테이블 데이터 조회 (페이징 + 검색)
* POST /api/table-management/tables/:tableName/data
*/
router.post("/tables/:tableName/data", getTableData);
/**
* 테이블 데이터 추가
* POST /api/table-management/tables/:tableName/add
*/
router.post("/tables/:tableName/add", addTableData);
/**
* 테이블 데이터 수정
* PUT /api/table-management/tables/:tableName/edit
*/
router.put("/tables/:tableName/edit", editTableData);
/**
* 테이블 데이터 삭제
* DELETE /api/table-management/tables/:tableName/delete
*/
router.delete("/tables/:tableName/delete", deleteTableData);
export default router;