using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using NetBlocks.Utilities.Environment; namespace DeepDrftData.Data; public class DeepDrftContextFactory : IDesignTimeDbContextFactory { public DeepDrftContext CreateDbContext(string[] args) { var path = CredentialTools.ResolvePath("connections", "environment/connections.json"); string? connectionString = null; if (File.Exists(path)) { using var doc = System.Text.Json.JsonDocument.Parse(File.ReadAllText(path)); connectionString = doc.RootElement .GetProperty("ConnectionStrings") .GetProperty("DefaultConnection") .GetString(); } // Fall back to a design-time dummy — the bundle only needs the provider/schema, // not a live connection. This removes the requirement to write a dummy file in CI. connectionString ??= "Host=localhost;Database=deepdrft-design-time;Username=dummy"; var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseNpgsql(connectionString); return new DeepDrftContext(optionsBuilder.Options); } }