import express from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import {
  saveFormData,
  saveFormDataEnhanced,
  updateFormData,
  updateFormDataPartial,
  updateFieldValue,
  deleteFormData,
  getFormData,
  getFormDataList,
  validateFormData,
  getTableColumns,
  getTablePrimaryKeys,
  saveLocationHistory,
  getLocationHistory,
} from "../controllers/dynamicFormController";

const router = express.Router();

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

// 폼 데이터 CRUD
router.post("/save", saveFormData); // 기존 버전 (레거시 지원)
router.post("/save-enhanced", saveFormDataEnhanced); // 개선된 버전
router.put("/update-field", updateFieldValue); // 특정 필드만 업데이트 (다른 테이블 지원) - /:id 보다 먼저 선언!
router.put("/:id", updateFormData);
router.patch("/:id/partial", updateFormDataPartial); // 부분 업데이트
router.delete("/:id", deleteFormData);
router.get("/:id", getFormData);

// 화면별 폼 데이터 목록 조회
router.get("/screen/:screenId", getFormDataList);

// 폼 데이터 검증
router.post("/validate", validateFormData);

// 테이블 컬럼 정보 조회 (검증용)
router.get("/table/:tableName/columns", getTableColumns);

// 테이블 기본키 조회
router.get("/table/:tableName/primary-keys", getTablePrimaryKeys);

// 위치 이력 (연속 위치 추적)
router.post("/location-history", saveLocationHistory);
router.get("/location-history/:tripId", getLocationHistory);

export default router;
