using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace ColaFlow.Modules.Mcp.Infrastructure.Persistence;
///
/// Design-time factory for McpDbContext (used by EF Core migrations)
///
public class McpDbContextFactory : IDesignTimeDbContextFactory
{
public McpDbContext CreateDbContext(string[] args)
{
// Build configuration
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false)
.AddJsonFile("appsettings.Development.json", optional: true)
.AddEnvironmentVariables()
.Build();
// Get connection string
var connectionString = configuration.GetConnectionString("DefaultConnection");
if (string.IsNullOrEmpty(connectionString))
{
throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
}
// Build DbContextOptions
var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseNpgsql(connectionString);
return new McpDbContext(optionsBuilder.Options);
}
}