43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from fastapi import APIRouter, File, Form, UploadFile
|
|
|
|
from app.schemas.common import ApiResponse
|
|
from app.services.import_task_service import create_import_task, list_import_tasks, retry_import_task
|
|
from app.services.imports_service import get_import_summary
|
|
|
|
router = APIRouter(tags=["imports"])
|
|
|
|
|
|
@router.get("/imports/summary", response_model=ApiResponse)
|
|
def imports_summary() -> ApiResponse:
|
|
return ApiResponse(data=get_import_summary())
|
|
|
|
|
|
@router.get("/imports/tasks", response_model=ApiResponse)
|
|
def import_tasks() -> ApiResponse:
|
|
return ApiResponse(data=list_import_tasks())
|
|
|
|
|
|
@router.post("/imports/upload", response_model=ApiResponse)
|
|
async def upload_import(
|
|
file: UploadFile = File(...),
|
|
source_type: int = Form(default=7),
|
|
) -> ApiResponse:
|
|
content = await file.read()
|
|
task = create_import_task(content, file.filename or "domains.txt", source_type=source_type)
|
|
return ApiResponse(message="导入任务已创建", data=task)
|
|
|
|
|
|
@router.post("/imports/text", response_model=ApiResponse)
|
|
def upload_import_text(payload: dict) -> ApiResponse:
|
|
text = str(payload.get("text") or "")
|
|
filename = str(payload.get("filename") or "manual_domains.txt")
|
|
source_type = int(payload.get("source_type") or 6)
|
|
task = create_import_task(text.encode("utf-8"), filename, source_type=source_type)
|
|
return ApiResponse(message="文本导入任务已创建", data=task)
|
|
|
|
|
|
@router.post("/imports/tasks/{task_id}/retry", response_model=ApiResponse)
|
|
def import_task_retry(task_id: str) -> ApiResponse:
|
|
task = retry_import_task(task_id)
|
|
return ApiResponse(message="导入任务已重新加入队列", data=task)
|