pequenas otimizações
All checks were successful
API and ETL Build / build_etl (push) Successful in 4s
API and ETL Build / build_api (push) Successful in 15s

This commit is contained in:
Jose Henrique 2025-06-18 20:01:52 -03:00
parent f5dda37285
commit 0d30afd700
2 changed files with 16 additions and 16 deletions

View File

@ -10,7 +10,7 @@ namespace OpenCand.Repository
protected readonly IMemoryCache? _cache;
// Default cache settings
protected static readonly TimeSpan DefaultCacheExpiration = TimeSpan.FromDays(7);
protected static readonly TimeSpan DefaultCacheExpiration = TimeSpan.MaxValue;
protected static readonly CacheItemPriority DefaultCachePriority = CacheItemPriority.Normal;
public BaseRepository(IConfiguration configuration, IMemoryCache? cache = null)

View File

@ -25,33 +25,33 @@ namespace OpenCand.API.Repository
using (var connection = new NpgsqlConnection(ConnectionString))
{
return (await connection.QueryAsync<MaioresEnriquecimento>(@"
WITH patrimonio_anual AS (
SELECT idcandidato, ano, SUM(valor) AS valor_total_ano
WITH extremos_declaracao AS (
SELECT
idcandidato,
MIN(ano) AS anoInicial,
MAX(ano) AS anoFinal
FROM mv_bem_candidato
GROUP BY idcandidato, ano
),
extremos_declaracao AS (
SELECT idcandidato, MIN(ano) AS anoInicial, MAX(ano) AS anoFinal
FROM patrimonio_anual
GROUP BY idcandidato
HAVING COUNT(DISTINCT ano) >= 2
HAVING COUNT(ano) >= 2
)
SELECT
c.nome,
ed.anoInicial,
pi.valor_total_ano AS patrimonioInicial,
pi.valor AS patrimonioInicial,
ed.anoFinal,
pf.valor_total_ano AS patrimonioFinal,
(pf.valor_total_ano - pi.valor_total_ano) AS enriquecimento
pf.valor AS patrimonioFinal,
(pf.valor - pi.valor) AS enriquecimento
FROM extremos_declaracao ed
JOIN candidato c ON ed.idcandidato = c.idcandidato
JOIN patrimonio_anual pi ON ed.idcandidato = pi.idcandidato AND ed.anoInicial = pi.ano
JOIN patrimonio_anual pf ON ed.idcandidato = pf.idcandidato AND ed.anoFinal = pf.ano
ORDER BY enriquecimento DESC
JOIN mv_bem_candidato pi ON ed.idcandidato = pi.idcandidato AND ed.anoInicial = pi.ano
JOIN mv_bem_candidato pf ON ed.idcandidato = pf.idcandidato AND ed.anoFinal = pf.ano
ORDER BY
enriquecimento DESC
LIMIT 25;")
).AsList();
}
}); return result ?? new List<MaioresEnriquecimento>();
});
return result ?? new List<MaioresEnriquecimento>();
}
public async Task<ConfigurationModel> GetConfiguration()