import express from "express"; import { authenticateToken } from "../middleware/authMiddleware"; import { createTableRelationship, getTableRelationships, getTableRelationship, updateTableRelationship, deleteTableRelationship, createDataLink, getLinkedDataByRelationship, deleteDataLink, getTableData, getDataFlowDiagrams, getDiagramRelationships, getDiagramRelationshipsByDiagramId, getDiagramRelationshipsByRelationshipId, copyDiagram, deleteDiagram, } from "../controllers/dataflowController"; import { testConditionalConnection, executeConditionalActions, } from "../controllers/conditionalConnectionController"; import nodeFlowsRouter from "./dataflow/node-flows"; import nodeExternalConnectionsRouter from "./dataflow/node-external-connections"; const router = express.Router(); // 모든 라우트에 인증 미들웨어 적용 router.use(authenticateToken); /** * 테이블 관계 생성 * POST /api/dataflow/table-relationships */ router.post("/table-relationships", createTableRelationship); /** * 테이블 관계 목록 조회 (회사별) * GET /api/dataflow/table-relationships */ router.get("/table-relationships", getTableRelationships); /** * 특정 테이블 관계 조회 * GET /api/dataflow/table-relationships/:relationshipId */ router.get("/table-relationships/:relationshipId", getTableRelationship); /** * 테이블 관계 수정 * PUT /api/dataflow/table-relationships/:relationshipId */ router.put("/table-relationships/:relationshipId", updateTableRelationship); /** * 테이블 관계 삭제 * DELETE /api/dataflow/table-relationships/:relationshipId */ router.delete("/table-relationships/:relationshipId", deleteTableRelationship); // ==================== 데이터 연결 관리 라우트 ==================== /** * 데이터 연결 생성 * POST /api/dataflow/data-links */ router.post("/data-links", createDataLink); /** * 관계별 연결된 데이터 조회 * GET /api/dataflow/data-links/relationship/:relationshipId */ router.get( "/data-links/relationship/:relationshipId", getLinkedDataByRelationship ); /** * 데이터 연결 삭제 * DELETE /api/dataflow/data-links/:bridgeId */ router.delete("/data-links/:bridgeId", deleteDataLink); // ==================== 테이블 데이터 조회 라우트 ==================== /** * 테이블 실제 데이터 조회 * GET /api/dataflow/table-data/:tableName */ router.get("/table-data/:tableName", getTableData); // ==================== 관계도 관리 라우트 ==================== /** * 관계도 목록 조회 (관계도 이름별로 그룹화) * GET /api/dataflow/diagrams */ router.get("/diagrams", getDataFlowDiagrams); /** * 특정 관계도의 모든 관계 조회 (diagram_id로) * GET /api/dataflow/diagrams/:diagramId/relationships */ router.get( "/diagrams/:diagramId/relationships", getDiagramRelationshipsByDiagramId ); /** * 특정 관계도의 모든 관계 조회 (diagramName으로 - 하위 호환성) * GET /api/dataflow/diagrams/name/:diagramName/relationships */ router.get( "/diagrams/name/:diagramName/relationships", getDiagramRelationships ); /** * 관계도 복사 * POST /api/dataflow/diagrams/:diagramName/copy */ router.post("/diagrams/:diagramName/copy", copyDiagram); /** * 관계도 삭제 * DELETE /api/dataflow/diagrams/:diagramName */ router.delete("/diagrams/:diagramName", deleteDiagram); // relationship_id로 관계도 관계 조회 (하위 호환성) router.get( "/relationships/:relationshipId/diagram", getDiagramRelationshipsByRelationshipId ); // ==================== 조건부 연결 관리 라우트 ==================== /** * 조건부 연결 조건 테스트 * POST /api/dataflow/diagrams/:diagramId/test-conditions */ router.post("/diagrams/:diagramId/test-conditions", testConditionalConnection); /** * 조건부 연결 액션 수동 실행 * POST /api/dataflow/diagrams/:diagramId/execute-actions */ router.post("/diagrams/:diagramId/execute-actions", executeConditionalActions); /** * 노드 기반 플로우 관리 * /api/dataflow/node-flows/* */ router.use("/node-flows", nodeFlowsRouter); /** * 노드 플로우용 외부 DB 커넥션 관리 * /api/dataflow/node-external-connections/* */ router.use("/node-external-connections", nodeExternalConnectionsRouter); export default router;