62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { Router } from "express";
|
|
import { DashboardController } from "../controllers/DashboardController";
|
|
import { authenticateToken } from "../middleware/authMiddleware";
|
|
|
|
const router = Router();
|
|
const dashboardController = new DashboardController();
|
|
|
|
/**
|
|
* 대시보드 API 라우트
|
|
*
|
|
* 모든 엔드포인트는 인증이 필요하지만,
|
|
* 공개 대시보드 조회는 인증 없이도 가능
|
|
*/
|
|
|
|
// 공개 대시보드 목록 조회 (인증 불필요)
|
|
router.get(
|
|
"/public",
|
|
dashboardController.getDashboards.bind(dashboardController)
|
|
);
|
|
|
|
// 공개 대시보드 상세 조회 (인증 불필요)
|
|
router.get(
|
|
"/public/:id",
|
|
dashboardController.getDashboard.bind(dashboardController)
|
|
);
|
|
|
|
// 쿼리 실행 (인증 불필요 - 개발용)
|
|
router.post(
|
|
"/execute-query",
|
|
dashboardController.executeQuery.bind(dashboardController)
|
|
);
|
|
|
|
// 외부 API 프록시 (CORS 우회)
|
|
router.post(
|
|
"/fetch-external-api",
|
|
dashboardController.fetchExternalApi.bind(dashboardController)
|
|
);
|
|
|
|
// 인증이 필요한 라우트들
|
|
router.use(authenticateToken);
|
|
|
|
// 내 대시보드 목록 조회
|
|
router.get(
|
|
"/my",
|
|
dashboardController.getMyDashboards.bind(dashboardController)
|
|
);
|
|
|
|
// 대시보드 CRUD
|
|
router.post("/", dashboardController.createDashboard.bind(dashboardController));
|
|
router.get("/", dashboardController.getDashboards.bind(dashboardController));
|
|
router.get("/:id", dashboardController.getDashboard.bind(dashboardController));
|
|
router.put(
|
|
"/:id",
|
|
dashboardController.updateDashboard.bind(dashboardController)
|
|
);
|
|
router.delete(
|
|
"/:id",
|
|
dashboardController.deleteDashboard.bind(dashboardController)
|
|
);
|
|
|
|
export default router;
|