fix AppDbContext migrate issue
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
|
||||
/// <summary>
|
||||
/// Design-time factory for EF tools and the CD migrations bundle.
|
||||
/// Without this, the bundle tries to bootstrap Program.cs (JWT/MinIO/etc.) and fails
|
||||
/// when those settings are absent next to ./migrate-api; --connection then never applies.
|
||||
/// </summary>
|
||||
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
|
||||
{
|
||||
public AppDbContext CreateDbContext(string[] args)
|
||||
{
|
||||
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
|
||||
optionsBuilder.UseNpgsql(ResolveConnectionString());
|
||||
return new AppDbContext(optionsBuilder.Options);
|
||||
}
|
||||
|
||||
private static string ResolveConnectionString()
|
||||
{
|
||||
var fromEnv = Environment.GetEnvironmentVariable("ConnectionStrings__DefaultConnection");
|
||||
if (!string.IsNullOrWhiteSpace(fromEnv))
|
||||
return fromEnv;
|
||||
|
||||
var config = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json", optional: true)
|
||||
.AddJsonFile("appsettings.Development.json", optional: true)
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
|
||||
var fromConfig = config.GetConnectionString("DefaultConnection");
|
||||
if (!string.IsNullOrWhiteSpace(fromConfig))
|
||||
return fromConfig;
|
||||
|
||||
// Placeholder so the factory can construct a context; migrate-api --connection
|
||||
// replaces this when applying migrations in CD.
|
||||
return "Host=127.0.0.1;Database=ef_design;Username=ef;Password=ef";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user