from fastapi import APIRouter, HTTPException from .models import ImportTask from .schemas import ImportTaskResponse from App.schemas import ResponseModel from tortoise.contrib.pydantic import pydantic_queryset_creator, pydantic_model_creator router = APIRouter(prefix="/tasks", tags=["Tasks"]) TaskData_Pydantic_List = pydantic_queryset_creator( ImportTask, ) TaskData_Pydantic = pydantic_model_creator( ImportTask, ) @router.get("/", response_model=ResponseModel) async def list_tasks(): tasks = ImportTask.all().order_by("-created_at") pydantic_tasks= await TaskData_Pydantic_List.from_queryset(tasks) return ResponseModel(success=True, message="List of tasks", data=pydantic_tasks.model_dump()) @router.get("/{task_id}", response_model=ResponseModel) async def get_task(task_id: int): task = await ImportTask.get_or_none(id=task_id) if not task: raise HTTPException(status_code=404, detail="Task not found") pydantic_task = await TaskData_Pydantic.from_tortoise_orm(task) return ResponseModel(success=True, message="Task found", data=pydantic_task.model_dump())