feat: add template upload endpoint
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ..database import get_db
|
||||
from ..services.template_service import create_template_record, store_template_file
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/templates", tags=["templates"])
|
||||
|
||||
|
||||
@router.post("/upload")
|
||||
def upload_template(
|
||||
file: UploadFile = File(...),
|
||||
name: str = Form(...),
|
||||
type: str = Form("report"),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""上传 Word 模板并创建模板记录。"""
|
||||
try:
|
||||
stored_path, _ = store_template_file(file)
|
||||
template = create_template_record(db, name=name, file_path=stored_path, type=type)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
except Exception as exc:
|
||||
db.rollback()
|
||||
raise HTTPException(status_code=500, detail="模板上传失败") from exc
|
||||
|
||||
return {
|
||||
"data": {
|
||||
"template_id": template.id,
|
||||
"name": template.name,
|
||||
"status": "uploaded",
|
||||
},
|
||||
"message": "ok",
|
||||
}
|
||||
Reference in New Issue
Block a user