partido + melhorias
This commit is contained in:
@@ -47,8 +47,8 @@ namespace OpenCand.Repository
|
||||
using (var connection = new NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
await connection.ExecuteAsync(@"
|
||||
INSERT INTO candidato_mapping (idcandidato, cpf, nome, sqcandidato, ano, tipoeleicao, siglauf, nomeue, cargo, nrcandidato, resultado)
|
||||
VALUES (@idcandidato, @cpf, @nome, @sqcandidato, @ano, @tipoeleicao, @siglauf, @nomeue, @cargo, @nrcandidato, @resultado);",
|
||||
INSERT INTO candidato_mapping (idcandidato, cpf, nome, sqcandidato, ano, tipoeleicao, siglauf, nomeue, cargo, nrcandidato, sgpartido, resultado)
|
||||
VALUES (@idcandidato, @cpf, @nome, @sqcandidato, @ano, @tipoeleicao, @siglauf, @nomeue, @cargo, @nrcandidato, @sgpartido, @resultado);",
|
||||
new
|
||||
{
|
||||
idcandidato = candidatoMapping.IdCandidato,
|
||||
@@ -61,6 +61,7 @@ namespace OpenCand.Repository
|
||||
nomeue = candidatoMapping.NomeUE,
|
||||
nrcandidato = candidatoMapping.NrCandidato,
|
||||
cargo = candidatoMapping.Cargo,
|
||||
sgpartido = candidatoMapping.Partido?.Sigla,
|
||||
resultado = candidatoMapping.Resultado
|
||||
});
|
||||
}
|
||||
@@ -78,15 +79,15 @@ namespace OpenCand.Repository
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<CandidatoMapping>?> GetCandidatoMappingByNome(string nome)
|
||||
public async Task<List<CandidatoMapping>?> GetCandidatoMappingByNome(string nome, string sqcandidato, int ano, string siglauf, string nomeue, string nrcandidato)
|
||||
{
|
||||
using (var connection = new NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
var query = @"
|
||||
SELECT idcandidato, cpf, nome, sqcandidato, ano, tipoeleicao, siglauf, nomeue, cargo, nrcandidato, resultado
|
||||
FROM candidato_mapping
|
||||
WHERE nome = @nome";
|
||||
return (await connection.QueryAsync<CandidatoMapping>(query, new { nome })).AsList();
|
||||
WHERE nome = @nome AND sqcandidato = @sqcandidato AND ano = @ano AND siglauf = @siglauf AND nomeue = @nomeue AND nrcandidato = @nrcandidato";
|
||||
return (await connection.QueryAsync<CandidatoMapping>(query, new { nome, sqcandidato, ano, siglauf, nomeue, nrcandidato })).AsList();
|
||||
}
|
||||
}
|
||||
|
||||
|
49
OpenCand.ETL/Repository/PartidoRepository.cs
Normal file
49
OpenCand.ETL/Repository/PartidoRepository.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using Dapper;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using OpenCand.Core.Models;
|
||||
using OpenCand.Repository;
|
||||
|
||||
namespace OpenCand.ETL.Repository
|
||||
{
|
||||
public class PartidoRepository : BaseRepository
|
||||
{
|
||||
// Memory cache for partido data
|
||||
private readonly MemoryCache partidoCache = new MemoryCache(new MemoryCacheOptions());
|
||||
|
||||
public PartidoRepository(IConfiguration configuration) : base(configuration)
|
||||
{
|
||||
// Initialize the cache with a sliding expiration of 5 minutes
|
||||
partidoCache = new MemoryCache(new MemoryCacheOptions
|
||||
{
|
||||
ExpirationScanFrequency = TimeSpan.FromMinutes(5)
|
||||
});
|
||||
}
|
||||
|
||||
public async Task AddPartidoAsync(Partido partido)
|
||||
{
|
||||
// Check if partido is already cached
|
||||
if (partidoCache.TryGetValue(partido.Sigla, out Partido? cachedPartido))
|
||||
{
|
||||
// If partido is already cached, no need to insert again
|
||||
return;
|
||||
}
|
||||
|
||||
using (var connection = new Npgsql.NpgsqlConnection(ConnectionString))
|
||||
{
|
||||
await connection.ExecuteAsync(@"
|
||||
INSERT INTO partido (sigla, nome, numero)
|
||||
VALUES (@sigla, @nome, @numero)
|
||||
ON CONFLICT DO NOTHING;",
|
||||
new
|
||||
{
|
||||
sigla = partido.Sigla,
|
||||
nome = partido.Nome,
|
||||
numero = partido.Numero
|
||||
});
|
||||
|
||||
partidoCache.Set(partido.Sigla, partido, TimeSpan.FromMinutes(5));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user