DeutschLernen/GermanApp/Infrastructure/Data/DbContext/AppDbContextFactory.cs
Lasse Rune Hansen 28c111f8e0 feat(backend/story-integration): Phase 5 - Apply database migration with EF design-time support
- Created AppDbContextFactory for EF Core design-time DbContext creation
- Added DOTNET_RUNNING_IN_EF environment variable checks to skip validation during migrations
- Modified MistralConnector, TtsService, VoskService to skip validation in EF design-time
- Updated Program.cs ValidateAiConfigurations to skip during migrations
- Applied migration 20260613125706_AddStorySegmentAndStoryProgressTables to database
- Updated feature documentation for Phase 5 completion

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-13 15:48:00 +02:00

35 lines
1.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
namespace GermanApp.Infrastructure.Data.DbContext;
/// <summary>
/// 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.
/// </summary>
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
{
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<AppDbContext>();
// 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);
}
}