PI_Assync_SCDE/Infrastructure/AccessRepository.cs
Adriano Serighelli 817d542631 Adiciona controle de taxa com TokenBucketRateLimiter e refatora ProcessarMedicoesUseCase para melhorar a concorrência e o tratamento de erros
Requisições não são realizadas de forma recursiva. O controle de páginação é realizado em ProcessarDiaAsync juntamente com o controle de erros e retry's
2025-11-14 09:38:44 -03:00

43 lines
2.1 KiB
C#

using System.Data.OleDb;
using Domain;
namespace Infrastructure
{
public class AccessRepository : IAccessRepository
{
private readonly string _connectionString;
public AccessRepository(string connectionString)
{
_connectionString = connectionString;
}
public async Task<IEnumerable<Perfil>> ObterPerfisAsync(CancellationToken ct)
{
var perfis = new List<Perfil>();
using var connection = new OleDbConnection(_connectionString);
await connection.OpenAsync(ct);
string sql = $"SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 AND Unidade_gerenciada ORDER BY cod_smart_unidade";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and (Cliente = 'RMC ALIMENTOS' OR Cliente = 'FERREIRA SUPERMERCADO' OR Cliente = 'VANGUARDA ALIMENTOS') AND Unidade_gerenciada ORDER BY PerfilCCEE";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and Cliente = 'ABEVÊ' and Unidade = 'ABV LOJA 29 - COXIM' AND Unidade_gerenciada ORDER BY PerfilCCEE";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and Cliente = 'SURF CENTER' AND Unidade_gerenciada ORDER BY PerfilCCEE";
// string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and Codigo_SCDE = 'PIPMTEUFCHE01'";
using var command = new OleDbCommand(sql, connection);
using var reader = await command.ExecuteReaderAsync(ct);
while (await reader.ReadAsync(ct))
{
var cod5min = reader.IsDBNull(0) ? null : reader.GetString(0);
var codigoSCDE = reader.IsDBNull(1) ? null : reader.GetString(1);
var dataMigracao = reader.IsDBNull(2) ? (DateTime?)null : reader.GetDateTime(2);
perfis.Add(new Perfil(cod5min, codigoSCDE, dataMigracao));
}
return perfis;
}
}
}