PI_Assync_SCDE/Infrastructure/AccessRepository.cs
Adriano Serighelli c98aec2c24 Melhorias em concorrência, logs e tratamento de erros
- Adicionado `SemaphoreSlim` para controle de requisições HTTP simultâneas.
- Implementado log detalhado de operações com `ConcurrentBag`.
- Melhorado tratamento de erros com mensagens enriquecidas.
- Refatorados métodos para suportar concorrência e paginação.
- Removido método `Interpolar` por não ser mais necessário.
- Ajustada consulta SQL em `AccessRepository` para novos filtros.
- Refatorada atualização em lote no `PostgresRepository`.
- Alterado intervalo de datas e suporte a proxy em `Program.cs`.
- Melhorias gerais de formatação, comentários e lógica de seleção.
2025-10-24 14:18:49 -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 = 'RMC 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 Codigo_SCDE = '3016021620'";
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;
}
}
}