// 배치관리 라우트
// 작성일: 2024-12-24

import { Router } from "express";
import { BatchController } from "../controllers/batchController";
import { authenticateToken } from "../middleware/authMiddleware";

const router = Router();

/**
 * GET /api/batch-configs
 * 배치 설정 목록 조회
 */
router.get("/", authenticateToken, BatchController.getBatchConfigs);

/**
 * GET /api/batch-configs/connections
 * 사용 가능한 커넥션 목록 조회
 */
router.get("/connections", BatchController.getAvailableConnections);

/**
 * GET /api/batch-configs/connections/:type/tables
 * 내부 DB 테이블 목록 조회
 */
router.get("/connections/:type/tables", authenticateToken, BatchController.getTablesFromConnection);

/**
 * GET /api/batch-configs/connections/:type/:id/tables
 * 외부 DB 테이블 목록 조회
 */
router.get("/connections/:type/:id/tables", authenticateToken, BatchController.getTablesFromConnection);

/**
 * GET /api/batch-configs/connections/:type/tables/:tableName/columns
 * 내부 DB 테이블 컬럼 정보 조회
 */
router.get("/connections/:type/tables/:tableName/columns", authenticateToken, BatchController.getTableColumns);

/**
 * GET /api/batch-configs/connections/:type/:id/tables/:tableName/columns
 * 외부 DB 테이블 컬럼 정보 조회
 */
router.get("/connections/:type/:id/tables/:tableName/columns", authenticateToken, BatchController.getTableColumns);

/**
 * GET /api/batch-configs/:id
 * 특정 배치 설정 조회
 */
router.get("/:id", authenticateToken, BatchController.getBatchConfigById);

/**
 * POST /api/batch-configs
 * 배치 설정 생성
 */
router.post("/", authenticateToken, BatchController.createBatchConfig);

/**
 * PUT /api/batch-configs/:id
 * 배치 설정 수정
 */
router.put("/:id", authenticateToken, BatchController.updateBatchConfig);

/**
 * DELETE /api/batch-configs/:id
 * 배치 설정 삭제 (논리 삭제)
 */
router.delete("/:id", authenticateToken, BatchController.deleteBatchConfig);

export default router;