using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; namespace StellaOps.Scanner.Triage; /// /// Design-time DbContext factory for dotnet ef CLI tooling. /// Used by scaffold and optimize commands. /// public sealed class TriageDesignTimeDbContextFactory : IDesignTimeDbContextFactory { private const string DefaultConnectionString = "Host=localhost;Port=55433;Database=postgres;Username=postgres;Password=postgres;Search Path=scanner,public"; private const string ConnectionStringEnvironmentVariable = "STELLAOPS_TRIAGE_EF_CONNECTION"; public TriageDbContext CreateDbContext(string[] args) { var connectionString = ResolveConnectionString(); var options = new DbContextOptionsBuilder() .UseNpgsql(connectionString, npgsql => { npgsql.MapEnum("triage_lane"); npgsql.MapEnum("triage_verdict"); npgsql.MapEnum("triage_reachability"); npgsql.MapEnum("triage_vex_status"); npgsql.MapEnum("triage_decision_kind"); npgsql.MapEnum("triage_snapshot_trigger"); npgsql.MapEnum("triage_evidence_type"); }) .Options; return new TriageDbContext(options); } private static string ResolveConnectionString() { var fromEnvironment = Environment.GetEnvironmentVariable(ConnectionStringEnvironmentVariable); return string.IsNullOrWhiteSpace(fromEnvironment) ? DefaultConnectionString : fromEnvironment; } }