Files
AICyclingCoach/backend/app/routes/import.py
2025-09-12 09:08:10 -07:00

38 lines
1.2 KiB
Python

from fastapi import APIRouter, UploadFile, File, Form, HTTPException
from fastapi.responses import JSONResponse
from backend.app.services.import_service import ImportService
import logging
from typing import Optional
router = APIRouter()
logger = logging.getLogger(__name__)
@router.post("/import/validate")
async def validate_import(
file: UploadFile = File(...),
):
try:
importer = ImportService()
validation_result = await importer.validate_import(file)
return JSONResponse(content=validation_result)
except Exception as e:
logger.error(f"Import validation failed: {str(e)}")
raise HTTPException(status_code=400, detail=str(e)) from e
@router.post("/import")
async def execute_import(
file: UploadFile = File(...),
conflict_resolution: str = Form("skip"),
resolutions: Optional[str] = Form(None),
):
try:
importer = ImportService()
import_result = await importer.execute_import(
file,
conflict_resolution,
resolutions
)
return JSONResponse(content=import_result)
except Exception as e:
logger.error(f"Import failed: {str(e)}")
raise HTTPException(status_code=500, detail=str(e)) from e