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

235 lines
6.6 KiB
TypeScript
Raw Normal View History

2025-08-25 14:08:08 +09:00
import express from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import {
getTableList,
getColumnList,
updateColumnSettings,
updateAllColumnSettings,
getTableLabels,
getColumnLabels,
2025-09-01 11:48:12 +09:00
updateColumnWebType,
2025-09-23 10:40:21 +09:00
updateColumnInputType,
2025-09-08 14:20:01 +09:00
updateTableLabel,
2025-09-03 15:23:12 +09:00
getTableData,
2025-11-04 14:33:39 +09:00
getTableRecord, // 🆕 단일 레코드 조회
2025-09-03 16:38:10 +09:00
addTableData,
editTableData,
deleteTableData,
getTableSchema,
checkTableExists,
getColumnWebTypes,
checkDatabaseConnection,
createLogTable,
getLogConfig,
getLogData,
toggleLogTable,
getCategoryColumnsByMenu, // 🆕 메뉴별 카테고리 컬럼 조회
multiTableSave, // 🆕 범용 다중 테이블 저장
2026-01-08 15:56:06 +09:00
getTableEntityRelations, // 🆕 두 테이블 간 엔티티 관계 조회
2026-01-15 15:17:52 +09:00
getReferencedByTables, // 🆕 현재 테이블을 참조하는 테이블 조회
2025-08-25 14:08:08 +09:00
} from "../controllers/tableManagementController";
const router = express.Router();
2025-11-06 17:01:13 +09:00
// 모든 라우트에 인증 미들웨어 적용
router.use(authenticateToken);
2025-08-25 14:08:08 +09:00
/**
*
* GET /api/table-management/tables
*/
router.get("/tables", getTableList);
2026-01-08 15:56:06 +09:00
/**
*
* GET /api/table-management/tables/entity-relations?leftTable=xxx&rightTable=yyy
*
* column_labels에서 /
* .
*/
router.get("/tables/entity-relations", getTableEntityRelations);
2025-08-25 14:08:08 +09:00
/**
*
* GET /api/table-management/tables/:tableName/columns
*/
router.get("/tables/:tableName/columns", getColumnList);
2026-01-15 15:17:52 +09:00
/**
*
* GET /api/table-management/columns/:tableName/referenced-by
*
* FK
*/
router.get("/columns/:tableName/referenced-by", getReferencedByTables);
2025-09-08 14:20:01 +09:00
/**
*
* PUT /api/table-management/tables/:tableName/label
*/
router.put("/tables/:tableName/label", updateTableLabel);
2025-08-25 14:08:08 +09:00
/**
*
* 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);
2025-09-01 11:48:12 +09:00
/**
2025-09-23 10:40:21 +09:00
* ( )
2025-09-01 11:48:12 +09:00
* PUT /api/table-management/tables/:tableName/columns/:columnName/web-type
*/
router.put(
"/tables/:tableName/columns/:columnName/web-type",
updateColumnWebType
);
2025-09-23 10:40:21 +09:00
/**
* ( )
* 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);
2025-09-03 15:23:12 +09:00
/**
* ( + )
* POST /api/table-management/tables/:tableName/data
*/
router.post("/tables/:tableName/data", getTableData);
2025-11-04 14:33:39 +09:00
/**
* ( )
* POST /api/table-management/tables/:tableName/record
*/
router.post("/tables/:tableName/record", getTableRecord);
2025-09-03 16:38:10 +09:00
/**
*
* 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);
// ========================================
// 테이블 로그 시스템 API
// ========================================
/**
*
* POST /api/table-management/tables/:tableName/log
*/
router.post("/tables/:tableName/log", createLogTable);
/**
*
* GET /api/table-management/tables/:tableName/log/config
*/
router.get("/tables/:tableName/log/config", getLogConfig);
/**
*
* GET /api/table-management/tables/:tableName/log
*/
router.get("/tables/:tableName/log", getLogData);
/**
* /
* POST /api/table-management/tables/:tableName/log/toggle
*/
router.post("/tables/:tableName/log/toggle", toggleLogTable);
// ========================================
// 메뉴 기반 카테고리 관리 API
// ========================================
/**
*
* GET /api/table-management/menu/:menuObjid/category-columns
*/
router.get("/menu/:menuObjid/category-columns", getCategoryColumnsByMenu);
// ========================================
// 범용 다중 테이블 저장 API
// ========================================
/**
* ( + )
* POST /api/table-management/multi-table-save
*
* () .
* +, + 1:N .
*/
router.post("/multi-table-save", multiTableSave);
2025-08-25 14:08:08 +09:00
export default router;