satupeta-main/app/mapset_pipeline/api/router.py
2026-02-23 12:20:42 +07:00

41 lines
1.4 KiB
Python
Executable File

# 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)