30 lines
933 B
Python
30 lines
933 B
Python
from pathlib import Path
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
from fastapi.responses import FileResponse
|
|
|
|
from app.schemas.common import ApiResponse
|
|
from app.services.export_service import create_export_file, list_exports
|
|
from app.core.files import exports_root
|
|
|
|
router = APIRouter(tags=["exports"])
|
|
|
|
|
|
@router.get("/exports", response_model=ApiResponse)
|
|
def export_list() -> ApiResponse:
|
|
return ApiResponse(data=list_exports())
|
|
|
|
|
|
@router.post("/exports/run", response_model=ApiResponse)
|
|
def export_run(payload: dict) -> ApiResponse:
|
|
record = create_export_file(payload)
|
|
return ApiResponse(message="导出文件已生成", data=record)
|
|
|
|
|
|
@router.get("/exports/download/{filename}")
|
|
def export_download(filename: str):
|
|
path = exports_root() / Path(filename).name
|
|
if not path.exists():
|
|
raise HTTPException(status_code=404, detail="文件不存在")
|
|
return FileResponse(path, filename=path.name)
|