Files
microservice/api/api_v2/modules/partidas/routers.py

43 lines
1.7 KiB
Python

from fastapi import APIRouter, HTTPException, Depends
from fastapi.responses import JSONResponse
from typing import Dict, Any, List, Optional
from api.api_v2.modules.authentication.services import get_current_user
from api.api_v2.modules.tasks.services import register_task
from .schemas import PartidaRequestSchema, PartidaListSchema
from .tasks import process_partida_request
router = APIRouter()
@router.post("/services/partida/", response_model=Dict[str, Any])
async def obtener_partida(partida_request: PartidaRequestSchema):
"""
Endpoint para obtener la información de una partida específica.
"""
acuse_dict = partida_request.model_dump()
# Ejecuta la tarea de Celery de forma asíncrona
task = process_partida_request.delay(acuse_dict)
# Devolver el ID de la tarea para consultar el estado después
return {"task_id": task.id, "status": "submitted"}
@router.post("/services/all/partidas/", response_model=Dict[str, Any])
async def obtener_partidas(partidas_request: PartidaListSchema):
"""
Endpoint para iniciar la descarga masiva de partidas.
"""
task_ids = []
partida_request_dict = partidas_request.model_dump()
# Para cada partida en la lista, dispara una tarea Celery
for partida in partida_request_dict.get('partidas', []):
# Crea un nuevo diccionario de datos para cada tarea
partida_dict = {
"partida": partida,
"pedimento": partida_request_dict.get('pedimento'),
"credencial": partida_request_dict.get('credencial')
}
task = process_partida_request.delay(partida_dict)
task_ids.append(task.id)
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}