67 lines
2.5 KiB
TypeScript
67 lines
2.5 KiB
TypeScript
import express from "express";
|
|
import { authenticateToken } from "../middleware/authMiddleware";
|
|
|
|
// 레이아웃 관리
|
|
import {
|
|
getLayouts,
|
|
getLayoutById,
|
|
createLayout,
|
|
updateLayout,
|
|
deleteLayout,
|
|
} from "../controllers/digitalTwinLayoutController";
|
|
|
|
// 외부 DB 데이터 조회
|
|
import {
|
|
getWarehouses,
|
|
getAreas,
|
|
getLocations,
|
|
getMaterials,
|
|
getMaterialCounts,
|
|
} from "../controllers/digitalTwinDataController";
|
|
|
|
const router = express.Router();
|
|
|
|
// 모든 라우트에 인증 미들웨어 적용
|
|
router.use(authenticateToken);
|
|
|
|
// ========== 레이아웃 관리 API ==========
|
|
router.get("/layouts", getLayouts); // 레이아웃 목록
|
|
router.get("/layouts/:id", getLayoutById); // 레이아웃 상세
|
|
router.post("/layouts", createLayout); // 레이아웃 생성
|
|
router.put("/layouts/:id", updateLayout); // 레이아웃 수정
|
|
router.delete("/layouts/:id", deleteLayout); // 레이아웃 삭제
|
|
|
|
// ========== 외부 DB 데이터 조회 API ==========
|
|
router.get("/data/tables/:connectionId", async (req, res) => {
|
|
// 테이블 목록 조회
|
|
try {
|
|
const { ExternalDbConnectionService } = await import("../services/externalDbConnectionService");
|
|
const result = await ExternalDbConnectionService.getTablesFromConnection(Number(req.params.connectionId));
|
|
return res.json(result);
|
|
} catch (error: any) {
|
|
return res.status(500).json({ success: false, error: error.message });
|
|
}
|
|
});
|
|
|
|
router.get("/data/table-preview/:connectionId/:tableName", async (req, res) => {
|
|
// 테이블 미리보기 (10개 레코드)
|
|
try {
|
|
const { connectionId, tableName } = req.params;
|
|
const { getExternalDbConnector } = await import("../controllers/digitalTwinDataController");
|
|
const connector = await getExternalDbConnector(Number(connectionId));
|
|
const result = await connector.executeQuery(`SELECT * FROM ${tableName} LIMIT 10`);
|
|
return res.json({ success: true, data: result.rows });
|
|
} catch (error: any) {
|
|
return res.status(500).json({ success: false, error: error.message });
|
|
}
|
|
});
|
|
|
|
router.get("/data/warehouses", getWarehouses); // 창고 목록
|
|
router.get("/data/areas", getAreas); // Area 목록
|
|
router.get("/data/locations", getLocations); // Location 목록
|
|
router.get("/data/materials", getMaterials); // 자재 목록 (특정 Location)
|
|
router.get("/data/material-counts", getMaterialCounts); // 자재 개수 (여러 Location)
|
|
|
|
export default router;
|
|
|