using FluentMigrator.Runner; using Mercados.Database.Migrations; using Mercados.Infrastructure; using Mercados.Infrastructure.Persistence; using Mercados.Infrastructure.Persistence.Repositories; using System.Reflection; var builder = WebApplication.CreateBuilder(args); // Nombre para política de CORS var MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; // Añadimos el servicio de CORS builder.Services.AddCors(options => { options.AddPolicy(name: MyAllowSpecificOrigins, policy => { policy.WithOrigins("http://localhost:5173", "http://192.168.10.78:5173") .AllowAnyHeader() .AllowAnyMethod(); }); }); // 1. Registramos nuestra fábrica de conexiones a la BD. builder.Services.AddSingleton(); // 2. AÑADIR: Registramos los repositorios que la API necesitará para LEER datos. builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // 3. Configurar FluentMigrator builder.Services .AddFluentMigratorCore() .ConfigureRunner(rb => rb // Usar el conector para SQL Server .AddSqlServer() // Obtener la cadena de conexión desde appsettings.json .WithGlobalConnectionString(builder.Configuration.GetConnectionString("DefaultConnection")) // Definir el ensamblado (proyecto) que contiene las migraciones .ScanIn(typeof(CreateInitialTables).Assembly).For.Migrations()) // Habilitar el logging para ver qué hacen las migraciones en la consola .AddLogging(lb => lb.AddFluentMigratorConsole()); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // 4. Ejecutar las migraciones al iniciar la aplicación (ideal para desarrollo y despliegues sencillos) // Obtenemos el "scope" de los servicios para poder solicitar el MigrationRunner using (var scope = app.Services.CreateScope()) { var migrationRunner = scope.ServiceProvider.GetRequiredService(); // Ejecuta las migraciones pendientes migrationRunner.MigrateUp(); } // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseCors(MyAllowSpecificOrigins); app.UseAuthorization(); app.MapControllers(); app.Run();