import express from "express"; import { authenticateToken } from "../middleware/authMiddleware"; import { getTableList, getColumnList, updateColumnSettings, updateAllColumnSettings, getTableLabels, getColumnLabels, updateColumnWebType, updateColumnInputType, updateTableLabel, getTableData, getTableRecord, // ๐Ÿ†• ๋‹จ์ผ ๋ ˆ์ฝ”๋“œ ์กฐํšŒ addTableData, editTableData, deleteTableData, getTableSchema, checkTableExists, getColumnWebTypes, checkDatabaseConnection, createLogTable, getLogConfig, getLogData, toggleLogTable, getCategoryColumnsByMenu, // ๐Ÿ†• ๋ฉ”๋‰ด๋ณ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ปฌ๋Ÿผ ์กฐํšŒ getCategoryColumnsByCompany, // ๐Ÿ†• ํšŒ์‚ฌ๋ณ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ปฌ๋Ÿผ ์กฐํšŒ multiTableSave, // ๐Ÿ†• ๋ฒ”์šฉ ๋‹ค์ค‘ ํ…Œ์ด๋ธ” ์ €์žฅ getTableEntityRelations, // ๐Ÿ†• ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„ ์—”ํ‹ฐํ‹ฐ ๊ด€๊ณ„ ์กฐํšŒ getReferencedByTables, // ๐Ÿ†• ํ˜„์žฌ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ” ์กฐํšŒ } from "../controllers/tableManagementController"; const router = express.Router(); // ๋ชจ๋“  ๋ผ์šฐํŠธ์— ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด ์ ์šฉ router.use(authenticateToken); /** * ํ…Œ์ด๋ธ” ๋ชฉ๋ก ์กฐํšŒ * GET /api/table-management/tables */ router.get("/tables", getTableList); /** * ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„ ์—”ํ‹ฐํ‹ฐ ๊ด€๊ณ„ ์กฐํšŒ * GET /api/table-management/tables/entity-relations?leftTable=xxx&rightTable=yyy * * column_labels์—์„œ ์ •์˜๋œ ์—”ํ‹ฐํ‹ฐ/์นดํ…Œ๊ณ ๋ฆฌ ํƒ€์ž… ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ * ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. */ router.get("/tables/entity-relations", getTableEntityRelations); /** * ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ •๋ณด ์กฐํšŒ * GET /api/table-management/tables/:tableName/columns */ router.get("/tables/:tableName/columns", getColumnList); /** * ํ˜„์žฌ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ชฉ๋ก ์กฐํšŒ * GET /api/table-management/columns/:tableName/referenced-by * * ๋ฆฌํ”ผํ„ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ €์žฅ ํ…Œ์ด๋ธ” ์„ ํƒ ์‹œ FK ๊ด€๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ */ router.get("/columns/:tableName/referenced-by", getReferencedByTables); /** * ํ…Œ์ด๋ธ” ๋ผ๋ฒจ ์„ค์ • * 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/record */ router.post("/tables/:tableName/record", getTableRecord); /** * ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ * 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/category-columns */ router.get("/category-columns", getCategoryColumnsByCompany); /** * ๋ฉ”๋‰ด์˜ ํ˜•์ œ ๋ฉ”๋‰ด๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ”์˜ ์นดํ…Œ๊ณ ๋ฆฌ ํƒ€์ž… ์ปฌ๋Ÿผ ์กฐํšŒ * 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); export default router;