# services/file_pipeline/router.py from fastapi import APIRouter, Depends, File, UploadFile, Form from .schemas import UploadRequest, PdfRequest from app.mapset_pipeline.service import handle_file_analysis, process_pdf_file, execute_postgis_ingestion from app.response.res import successRes, errorRes router = APIRouter(prefix="/pipeline", tags=["File Pipeline"]) @router.post("/analyze") async def upload_file( file: UploadFile = File(...), page: str = Form(""), sheet: str = Form(""), fileDesc: str = Form("") ): try: data = await handle_file_analysis(file, page, sheet, fileDesc) return successRes(data=data) except Exception as e: return errorRes(message="Upload failed", details=str(e), status_code=500) @router.post("/analyze/pdf") async def upload_file( payload: PdfRequest ): try: res = await process_pdf_file(payload) return res except Exception as e: return errorRes(message="Upload failed", details=str(e), status_code=500) @router.post("/publish") async def process_to_postgis(payload: UploadRequest): # user_id bisa diambil dari dependency injection auth try: data = await execute_postgis_ingestion(payload, user_id=2) return successRes(data=data) except Exception as e: return errorRes(message="Processing failed", details=str(e), status_code=500)