using ClaudeDo.Data.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace ClaudeDo.Data.Configuration; public class AppSettingsEntityConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.ToTable("app_settings"); builder.HasKey(s => s.Id); builder.Property(s => s.Id).HasColumnName("id").ValueGeneratedNever(); builder.Property(s => s.DefaultClaudeInstructions) .HasColumnName("default_claude_instructions").IsRequired().HasDefaultValue(string.Empty); builder.Property(s => s.DefaultModel) .HasColumnName("default_model").IsRequired().HasDefaultValue("sonnet"); builder.Property(s => s.DefaultMaxTurns) .HasColumnName("default_max_turns").IsRequired().HasDefaultValue(30); builder.Property(s => s.DefaultPermissionMode) .HasColumnName("default_permission_mode").IsRequired().HasDefaultValue("bypassPermissions"); builder.Property(s => s.MaxParallelExecutions) .HasColumnName("max_parallel_executions").IsRequired().HasDefaultValue(1); builder.Property(s => s.WorktreeStrategy) .HasColumnName("worktree_strategy").IsRequired().HasDefaultValue("sibling"); builder.Property(s => s.CentralWorktreeRoot) .HasColumnName("central_worktree_root"); builder.Property(s => s.WorktreeAutoCleanupEnabled) .HasColumnName("worktree_auto_cleanup_enabled").IsRequired().HasDefaultValue(false); builder.Property(s => s.WorktreeAutoCleanupDays) .HasColumnName("worktree_auto_cleanup_days").IsRequired().HasDefaultValue(7); builder.Property(s => s.RepoImportFolders) .HasColumnName("repo_import_folders"); builder.Property(s => s.ReportExcludedPaths).HasColumnName("report_excluded_paths"); builder.Property(s => s.StandupWeekday).HasColumnName("standup_weekday") .IsRequired().HasDefaultValue((int)DayOfWeek.Wednesday); builder.Property(s => s.DailyPrepMaxTasks) .HasColumnName("daily_prep_max_tasks").IsRequired().HasDefaultValue(5); builder.HasData(new AppSettingsEntity { Id = AppSettingsEntity.SingletonId }); } }