41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
|
|
# 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)
|