import express from "express";
import {
  mergeCodeAllTables,
  getTablesWithColumn,
  previewCodeMerge,
  mergeCodeByValue,
  previewMergeCodeByValue,
} from "../controllers/codeMergeController";
import { authenticateToken } from "../middleware/authMiddleware";

const router = express.Router();

// 모든 라우트에 인증 미들웨어 적용
router.use(authenticateToken);

/**
 * POST /api/code-merge/merge-all-tables
 * 코드 병합 실행 (모든 관련 테이블에 적용 - 같은 컬럼명만)
 * Body: { columnName, oldValue, newValue }
 */
router.post("/merge-all-tables", mergeCodeAllTables);

/**
 * GET /api/code-merge/tables-with-column/:columnName
 * 특정 컬럼을 가진 테이블 목록 조회
 */
router.get("/tables-with-column/:columnName", getTablesWithColumn);

/**
 * POST /api/code-merge/preview
 * 코드 병합 미리보기 (같은 컬럼명 기준)
 * Body: { columnName, oldValue }
 */
router.post("/preview", previewCodeMerge);

/**
 * POST /api/code-merge/merge-by-value
 * 값 기반 코드 병합 (모든 테이블의 모든 컬럼에서 해당 값을 찾아 변경)
 * Body: { oldValue, newValue }
 */
router.post("/merge-by-value", mergeCodeByValue);

/**
 * POST /api/code-merge/preview-by-value
 * 값 기반 코드 병합 미리보기 (컬럼명 상관없이 값으로 검색)
 * Body: { oldValue }
 */
router.post("/preview-by-value", previewMergeCodeByValue);

export default router;

