Busca por nome com destaque e navegação para página
This commit is contained in:
@@ -17,6 +17,7 @@ from ..schemas.ranking_schema import (
|
||||
JobStatusSchema,
|
||||
ProcessarRankingRequestSchema,
|
||||
ProcessarRankingResponseSchema,
|
||||
ConsultaNomeSchema,
|
||||
)
|
||||
from .dependencies import get_repository, get_ranking_repository, get_processar_job
|
||||
from ...application.jobs.job_status import job_status
|
||||
@@ -113,6 +114,24 @@ async def ranking_paginado(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/ranking/busca", response_model=List[ConsultaNomeSchema])
|
||||
async def buscar_por_nome(
|
||||
nome: str = Query(..., min_length=3, description="Nome (ou parte) para buscar"),
|
||||
limit: int = Query(default=5, ge=1, le=20, description="Limite de resultados"),
|
||||
ranking_repo = Depends(get_ranking_repository),
|
||||
):
|
||||
resultados = ranking_repo.buscar_por_nome(nome=nome, limit=limit)
|
||||
return [
|
||||
ConsultaNomeSchema(
|
||||
id_pessoa=r["ID_PESSOA"],
|
||||
nome=r["NOME"],
|
||||
posicao=r["POSICAO"],
|
||||
pontuacao_total=float(r["PONTUACAO_TOTAL"]),
|
||||
)
|
||||
for r in resultados
|
||||
]
|
||||
|
||||
|
||||
def _consultor_resumo_from_ranking(c):
|
||||
consultoria = None
|
||||
coordenacoes_capes = None
|
||||
|
||||
@@ -63,3 +63,10 @@ class ProcessarRankingResponseSchema(BaseModel):
|
||||
sucesso: bool
|
||||
mensagem: str
|
||||
job_id: Optional[str] = None
|
||||
|
||||
|
||||
class ConsultaNomeSchema(BaseModel):
|
||||
id_pessoa: int
|
||||
nome: str
|
||||
posicao: Optional[int]
|
||||
pontuacao_total: float
|
||||
|
||||
Reference in New Issue
Block a user