using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; using Musify.Infrastructure.Configuration; namespace Musify.Infrastructure.Persistence { public class DatabaseDesignTimeFactory : IDesignTimeDbContextFactory { public Database CreateDbContext(string[] args) { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("DesignSettings.json") .AddUserSecrets() .Build(); var databaseConfiguration = configuration .GetRequiredSection(DatabaseConfiguration.SectionName) .Get() ?? throw new InvalidOperationException($"{DatabaseConfiguration.SectionName} configuration section not found."); var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseNpgsql(databaseConfiguration.ConnectionString); return new Database(databaseConfiguration); } } }