Search/AdvisoryAI and DAL conversion to EF finishes up. Preparation for microservices consolidation.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
|
||||
namespace StellaOps.Scanner.Triage;
|
||||
|
||||
/// <summary>
|
||||
/// Design-time DbContext factory for dotnet ef CLI tooling.
|
||||
/// Used by scaffold and optimize commands.
|
||||
/// </summary>
|
||||
public sealed class TriageDesignTimeDbContextFactory : IDesignTimeDbContextFactory<TriageDbContext>
|
||||
{
|
||||
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<TriageDbContext>()
|
||||
.UseNpgsql(connectionString, npgsql =>
|
||||
{
|
||||
npgsql.MapEnum<Entities.TriageLane>("triage_lane");
|
||||
npgsql.MapEnum<Entities.TriageVerdict>("triage_verdict");
|
||||
npgsql.MapEnum<Entities.TriageReachability>("triage_reachability");
|
||||
npgsql.MapEnum<Entities.TriageVexStatus>("triage_vex_status");
|
||||
npgsql.MapEnum<Entities.TriageDecisionKind>("triage_decision_kind");
|
||||
npgsql.MapEnum<Entities.TriageSnapshotTrigger>("triage_snapshot_trigger");
|
||||
npgsql.MapEnum<Entities.TriageEvidenceType>("triage_evidence_type");
|
||||
})
|
||||
.Options;
|
||||
|
||||
return new TriageDbContext(options);
|
||||
}
|
||||
|
||||
private static string ResolveConnectionString()
|
||||
{
|
||||
var fromEnvironment = Environment.GetEnvironmentVariable(ConnectionStringEnvironmentVariable);
|
||||
return string.IsNullOrWhiteSpace(fromEnvironment) ? DefaultConnectionString : fromEnvironment;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user