24 lines
1.0 KiB
C#
24 lines
1.0 KiB
C#
using static PostFundManagement.Infrastructure.Extensions.Constants;
|
|
|
|
namespace PostFundManagement.Infrastructure.Database;
|
|
|
|
public sealed class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
|
|
{
|
|
public ApplicationDbContext CreateDbContext(string[] args)
|
|
{
|
|
var configuration = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddUserSecrets<IInfrastructure>(optional: true)
|
|
.AddEnvironmentVariables()
|
|
.Build();
|
|
|
|
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
|
|
|
|
var connectionString = configuration.GetConnectionString(DatabaseConfigName)
|
|
?? throw new InvalidOperationException($"Connection string '{DatabaseConfigName}' was not found in configuration.");
|
|
|
|
optionsBuilder.UseNpgsql(connectionString, npgsqlOptions => npgsqlOptions.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName));
|
|
|
|
return new ApplicationDbContext(optionsBuilder.Options);
|
|
}
|
|
} |