using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
namespace GermanApp.Infrastructure.Data.DbContext;
///
/// Factory for creating AppDbContext instances during design-time (e.g., EF migrations).
/// This is used by EF Core tools to create the DbContext without running the full application startup.
///
public class AppDbContextFactory : IDesignTimeDbContextFactory
{
public AppDbContext CreateDbContext(string[] args)
{
// Build configuration from appsettings.json
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile("appsettings.Development.json", optional: true)
.AddEnvironmentVariables()
.Build();
var builder = new DbContextOptionsBuilder();
// Use PostgreSQL
var connectionString = configuration.GetConnectionString("DefaultConnection")
?? "Host=localhost;Port=5432;Database=DeutschLernen;Username=postgres;Password=postgres";
builder.UseNpgsql(connectionString);
return new AppDbContext(builder.Options);
}
}