// ============================================================
// 개발관리 PART (M1 등록 / M2 조회) 라우트.
// app.ts: app.use("/api/development", devPartRoutes)
// ============================================================

import { Router } from "express";
import multer from "multer";
import path from "path";
import fs from "fs";
import { authenticateToken } from "../middleware/authMiddleware";
import * as ctrl from "../controllers/devPartController";

const router = Router();
router.use(authenticateToken);

const excelUpload = multer({
  storage: multer.memoryStorage(),
  limits: { fileSize: 10 * 1024 * 1024 }, // 10MB
});

// 도면 다중 업로드 — 임시 디스크 저장. 매칭 성공 시 서비스에서 최종 위치로 이동.
const drawingTempDir = path.join(process.cwd(), "uploads", "temp");
if (!fs.existsSync(drawingTempDir)) fs.mkdirSync(drawingTempDir, { recursive: true });
const drawingUpload = multer({
  dest: drawingTempDir,
  limits: { fileSize: 200 * 1024 * 1024 }, // 파일당 200MB
});

// M1 — 임시(등록) 그리드
router.get("/part-temp/list", ctrl.getTempList);
router.post("/part-temp/deploy", ctrl.deploy);

// M2 — 릴리즈 그리드
router.get("/part/list", ctrl.getList);

// Excel Import (M1·M2 공용) — /:objid 보다 위에 위치
router.post("/part/excel-parse", excelUpload.single("file"), ctrl.excelParse);
router.post("/part/excel-save", ctrl.excelSave);

// 도면 다중 업로드 (M1·M2 공용) — /:objid 보다 위
router.post(
  "/part/drawing-multi-upload",
  drawingUpload.array("files", 500),
  ctrl.drawingMultiUpload
);

// PART 자동완성 옵션 (select2-part 1:1) — /:objid 보다 위
router.get("/part/options", ctrl.partOptions);

// 다중 삭제 (body: { objids: string[] }) — /:objid 보다 위
router.delete("/part", ctrl.removeMany);

// 단건 + CRUD
router.get("/part/:objid", ctrl.getByObjid);
router.post("/part", ctrl.create);
router.put("/part/:objid", ctrl.update);

export default router;
