using HrynCo.NotificationService.DAL.EF; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; Log.Logger = new LoggerConfiguration() .WriteTo.Console() .CreateBootstrapLogger(); try { Log.Information("🚀 Notification Service Migrator starting..."); var host = Host.CreateDefaultBuilder(args) .UseSerilog((ctx, cfg) => cfg .ReadFrom.Configuration(ctx.Configuration) .WriteTo.Console()) .ConfigureServices((ctx, services) => { var connectionString = ctx.Configuration["App:ConnectionString"] ?? throw new InvalidOperationException("App:ConnectionString is not configured."); services.AddDbContext(options => options.UseNpgsql(connectionString)); }) .Build(); using var scope = host.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); Log.Information("Applying migrations..."); await db.Database.MigrateAsync(); Log.Information("Migrations applied successfully."); } catch (Exception ex) { Log.Fatal(ex, "Migration failed."); return 1; } finally { await Log.CloseAndFlushAsync(); } return 0;