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

69 lines
2.4 KiB
Python

from fastapi import APIRouter, HTTPException
from .schemas import CoveListSchema, CoveRequestSchema
from typing import List, Dict, Any
from uuid import UUID
import logging
from .tasks import process_cove_request, process_acuse_cove_request
from ..tasks.services import register_task
logger = logging.getLogger(__name__)
router = APIRouter()
# Aquí puedes definir tus endpoints relacionados con COVES usando el esquema CoveBaseSchema
@router.post("/services/cove/", response_model=Dict[str, Any])
async def get_cove(cove: CoveRequestSchema):
"""Endpoint para obtener un COVE específico."""
cove_dict = cove.model_dump()
task = process_cove_request.delay(cove_dict)
return {"task_id": task.id, "status": "submitted"}
@router.post("/services/all/coves", response_model=Dict[str, Any])
async def get_coves(coves_request: CoveListSchema):
"""Endpoint para obtener múltiples COVEs asociados a un pedimento."""
task_ids = []
coves_dict = coves_request.model_dump()
pedimento = coves_dict.get('pedimento', {})
for cove in coves_dict.get('coves', []):
cove_dict = {
"cove": cove,
"pedimento": pedimento,
"credencial": coves_dict.get('credencial')
}
task = process_cove_request.delay(cove_dict)
task_ids.append(task.id)
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}
@router.post("/services/acuse/cove/", response_model=Dict[str, Any])
async def get_acuse_cove(cove: CoveRequestSchema):
"""Endpoint para obtener el acuse de un COVE específico."""
cove_dict = cove.model_dump()
task = process_acuse_cove_request.delay(cove_dict)
return {"task_id": task.id, "status": "submitted"}
@router.post("/services/all/acuse/cove/", response_model=Dict[str, Any])
async def get_acuses_cove(coves_request: CoveListSchema):
"""Endpoint para obtener los acuses de múltiples COVEs asociados a un pedimento."""
task_ids = []
coves_dict = coves_request.model_dump()
pedimento = coves_dict.get('pedimento', {})
for cove in coves_dict.get('coves', []):
acuse_dict = {
"cove": cove,
"pedimento": pedimento,
"credencial": coves_dict.get('credencial')
}
task = process_acuse_cove_request.delay(acuse_dict)
task_ids.append(task.id)
return {"task_ids": task_ids, "status": "submitted", "total": len(task_ids)}