From 226d8199095a830906b302ad1f9110aacc1dd2d8 Mon Sep 17 00:00:00 2001 From: Jose Henrique Date: Tue, 10 Jun 2025 20:40:03 -0300 Subject: [PATCH] add random candidato --- OpenCand.API/Controllers/CandidatoController.cs | 9 +++++++++ OpenCand.API/Repository/CandidatoRepository.cs | 11 +++++++++++ OpenCand.API/Services/OpenCandService.cs | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/OpenCand.API/Controllers/CandidatoController.cs b/OpenCand.API/Controllers/CandidatoController.cs index 69bace7..a328578 100644 --- a/OpenCand.API/Controllers/CandidatoController.cs +++ b/OpenCand.API/Controllers/CandidatoController.cs @@ -30,6 +30,15 @@ namespace OpenCand.API.Controllers return await openCandService.SearchCandidatosAsync(q); } + [HttpGet("random")] + public async Task GetRandomCandidatoId() + { + return new + { + idCandidato = await openCandService.GetRandomCandidato() + }; + } + [HttpGet("{id}")] public async Task GetCandidatoById([FromRoute] Guid id) { diff --git a/OpenCand.API/Repository/CandidatoRepository.cs b/OpenCand.API/Repository/CandidatoRepository.cs index 8a82c2c..55ede74 100644 --- a/OpenCand.API/Repository/CandidatoRepository.cs +++ b/OpenCand.API/Repository/CandidatoRepository.cs @@ -101,5 +101,16 @@ namespace OpenCand.Repository return (await connection.QueryAsync(query, new { idcandidato })).AsList(); } } + + public async Task GetRandomCandidatoIdAsync() + { + using var connection = new NpgsqlConnection(ConnectionString); + return await connection.QueryFirstOrDefaultAsync(@" + SELECT idcandidato + FROM candidato + ORDER BY RANDOM() + LIMIT 1; + "); + } } } diff --git a/OpenCand.API/Services/OpenCandService.cs b/OpenCand.API/Services/OpenCandService.cs index 32d4573..05085c6 100644 --- a/OpenCand.API/Services/OpenCandService.cs +++ b/OpenCand.API/Services/OpenCandService.cs @@ -55,6 +55,11 @@ namespace OpenCand.API.Services }; } + public async Task GetRandomCandidato() + { + return await candidatoRepository.GetRandomCandidatoIdAsync(); + } + public async Task GetCandidatoAsync(Guid idcandidato) { var result = await candidatoRepository.GetCandidatoAsync(idcandidato);