2025-08-14 13:12:16 -03:00
|
|
|
using Elecciones.Database;
|
2025-08-14 15:27:45 -03:00
|
|
|
using Elecciones.Infrastructure.Services;
|
2025-08-14 12:37:57 -03:00
|
|
|
using Elecciones.Worker;
|
2025-08-14 13:12:16 -03:00
|
|
|
using Microsoft.EntityFrameworkCore;
|
2025-08-14 12:37:57 -03:00
|
|
|
|
|
|
|
|
var builder = Host.CreateApplicationBuilder(args);
|
2025-08-14 13:12:16 -03:00
|
|
|
|
|
|
|
|
// --- Configuración de Servicios ---
|
|
|
|
|
|
2025-08-14 15:27:45 -03:00
|
|
|
// 1. Configuración de Base de Datos (¡Este bloque es esencial!)
|
2025-08-14 13:12:16 -03:00
|
|
|
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
|
|
|
|
|
builder.Services.AddDbContext<EleccionesDbContext>(options =>
|
|
|
|
|
options.UseSqlServer(connectionString));
|
2025-08-14 15:27:45 -03:00
|
|
|
|
|
|
|
|
// 2. Configuración del Servicio de API (elegirá el Real o el Falso según el modo de compilación)
|
|
|
|
|
#if DEBUG
|
|
|
|
|
// En modo DEBUG (desarrollo local), usamos el servicio FALSO.
|
|
|
|
|
// No es necesario registrar el ILogger, .NET lo inyecta automáticamente.
|
|
|
|
|
builder.Services.AddSingleton<IElectoralApiService, FakeElectoralApiService>();
|
|
|
|
|
#else
|
|
|
|
|
// En modo RELEASE (producción), usamos el servicio REAL.
|
|
|
|
|
builder.Services.AddHttpClient("ElectoralApiClient", client =>
|
|
|
|
|
{
|
|
|
|
|
var baseUrl = builder.Configuration["ElectoralApi:BaseUrl"];
|
|
|
|
|
if (!string.IsNullOrEmpty(baseUrl))
|
|
|
|
|
{
|
|
|
|
|
client.BaseAddress = new Uri(baseUrl);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.Services.AddSingleton<IElectoralApiService, ElectoralApiService>();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// 3. Registrar el Worker como un servicio que se ejecuta en segundo plano.
|
2025-08-14 12:37:57 -03:00
|
|
|
builder.Services.AddHostedService<Worker>();
|
|
|
|
|
|
2025-08-14 13:12:16 -03:00
|
|
|
|
2025-08-14 15:27:45 -03:00
|
|
|
var host = builder.Build();
|
2025-08-14 13:12:16 -03:00
|
|
|
host.Run();
|