add random candidato
All checks were successful
API and ETL Build / build_etl (push) Successful in 3s
API and ETL Build / build_api (push) Successful in 10s

This commit is contained in:
Jose Henrique 2025-06-10 20:40:03 -03:00
parent 23b1f0f14e
commit 226d819909
3 changed files with 25 additions and 0 deletions

View File

@ -30,6 +30,15 @@ namespace OpenCand.API.Controllers
return await openCandService.SearchCandidatosAsync(q); return await openCandService.SearchCandidatosAsync(q);
} }
[HttpGet("random")]
public async Task<object> GetRandomCandidatoId()
{
return new
{
idCandidato = await openCandService.GetRandomCandidato()
};
}
[HttpGet("{id}")] [HttpGet("{id}")]
public async Task<Candidato> GetCandidatoById([FromRoute] Guid id) public async Task<Candidato> GetCandidatoById([FromRoute] Guid id)
{ {

View File

@ -101,5 +101,16 @@ namespace OpenCand.Repository
return (await connection.QueryAsync<CandidatoExt>(query, new { idcandidato })).AsList(); return (await connection.QueryAsync<CandidatoExt>(query, new { idcandidato })).AsList();
} }
} }
public async Task<Guid?> GetRandomCandidatoIdAsync()
{
using var connection = new NpgsqlConnection(ConnectionString);
return await connection.QueryFirstOrDefaultAsync<Guid?>(@"
SELECT idcandidato
FROM candidato
ORDER BY RANDOM()
LIMIT 1;
");
}
} }
} }

View File

@ -55,6 +55,11 @@ namespace OpenCand.API.Services
}; };
} }
public async Task<Guid?> GetRandomCandidato()
{
return await candidatoRepository.GetRandomCandidatoIdAsync();
}
public async Task<Candidato> GetCandidatoAsync(Guid idcandidato) public async Task<Candidato> GetCandidatoAsync(Guid idcandidato)
{ {
var result = await candidatoRepository.GetCandidatoAsync(idcandidato); var result = await candidatoRepository.GetCandidatoAsync(idcandidato);