// <auto-generated />
using System;
using ClaudeDo.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

#nullable disable

namespace ClaudeDo.Data.Migrations
{
    [DbContext(typeof(ClaudeDoDbContext))]
    [Migration("20260827081703_AddPermissionModeOverrides")]
    partial class AddPermissionModeOverrides
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "8.0.11");

            modelBuilder.Entity("ClaudeDo.Data.Models.AppSettingsEntity", b =>
                {
                    b.Property<int>("Id")
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");

                    b.Property<bool>("AutoContinueOnUsageLimit")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("auto_continue_on_usage_limit");

                    b.Property<string>("CentralWorktreeRoot")
                        .HasColumnType("TEXT")
                        .HasColumnName("central_worktree_root");

                    b.Property<int>("DailyPrepMaxTasks")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(5)
                        .HasColumnName("daily_prep_max_tasks");

                    b.Property<string>("DefaultClaudeInstructions")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("")
                        .HasColumnName("default_claude_instructions");

                    b.Property<int>("DefaultMaxTurns")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(40)
                        .HasColumnName("default_max_turns");

                    b.Property<string>("DefaultModel")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("sonnet")
                        .HasColumnName("default_model");

                    b.Property<string>("DefaultPermissionMode")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("bypassPermissions")
                        .HasColumnName("default_permission_mode");

                    b.Property<int>("MaxParallelExecutions")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(1)
                        .HasColumnName("max_parallel_executions");

                    b.Property<int>("MaxTurnsCeiling")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(80)
                        .HasColumnName("max_turns_ceiling");

                    b.Property<string>("ModelPresets")
                        .HasColumnType("TEXT")
                        .HasColumnName("model_presets");

                    b.Property<int>("NextTaskNumber")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(1)
                        .HasColumnName("next_task_number");

                    b.Property<string>("RepoImportFolders")
                        .HasColumnType("TEXT")
                        .HasColumnName("repo_import_folders");

                    b.Property<string>("ReportExcludedPaths")
                        .HasColumnType("TEXT")
                        .HasColumnName("report_excluded_paths");

                    b.Property<string>("SessionSkills")
                        .HasColumnType("TEXT")
                        .HasColumnName("session_skills");

                    b.Property<int>("StandupWeekday")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(3)
                        .HasColumnName("standup_weekday");

                    b.Property<int>("UsageGateFiveHourPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(80)
                        .HasColumnName("usage_gate_five_hour_pct");

                    b.Property<int>("UsageGateSevenDayPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(90)
                        .HasColumnName("usage_gate_seven_day_pct");

                    b.Property<int>("UsageThrottleFiveHourHardPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(65)
                        .HasColumnName("usage_throttle_five_hour_hard_pct");

                    b.Property<int>("UsageThrottleFiveHourSoftPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(50)
                        .HasColumnName("usage_throttle_five_hour_soft_pct");

                    b.Property<int>("UsageThrottleSevenDayHardPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(65)
                        .HasColumnName("usage_throttle_seven_day_hard_pct");

                    b.Property<int>("UsageThrottleSevenDaySoftPct")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(50)
                        .HasColumnName("usage_throttle_seven_day_soft_pct");

                    b.Property<int>("WorktreeAutoCleanupDays")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(7)
                        .HasColumnName("worktree_auto_cleanup_days");

                    b.Property<bool>("WorktreeAutoCleanupEnabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("worktree_auto_cleanup_enabled");

                    b.Property<string>("WorktreeStrategy")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("sibling")
                        .HasColumnName("worktree_strategy");

                    b.HasKey("Id");

                    b.ToTable("app_settings", (string)null);

                    b.HasData(
                        new
                        {
                            Id = 1,
                            AutoContinueOnUsageLimit = false,
                            DailyPrepMaxTasks = 5,
                            DefaultClaudeInstructions = "",
                            DefaultMaxTurns = 40,
                            DefaultModel = "sonnet",
                            DefaultPermissionMode = "auto",
                            MaxParallelExecutions = 1,
                            MaxTurnsCeiling = 80,
                            NextTaskNumber = 1,
                            StandupWeekday = 3,
                            UsageGateFiveHourPct = 80,
                            UsageGateSevenDayPct = 90,
                            UsageThrottleFiveHourHardPct = 65,
                            UsageThrottleFiveHourSoftPct = 50,
                            UsageThrottleSevenDayHardPct = 65,
                            UsageThrottleSevenDaySoftPct = 50,
                            WorktreeAutoCleanupDays = 7,
                            WorktreeAutoCleanupEnabled = false,
                            WorktreeStrategy = "sibling"
                        });
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.DailyNoteEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<DateOnly>("Date")
                        .HasColumnType("TEXT")
                        .HasColumnName("note_date");

                    b.Property<int>("SortOrder")
                        .HasColumnType("INTEGER")
                        .HasColumnName("sort_order");

                    b.Property<string>("Text")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("text");

                    b.HasKey("Id");

                    b.HasIndex("Date");

                    b.ToTable("daily_notes", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.ListConfigEntity", b =>
                {
                    b.Property<string>("ListId")
                        .HasColumnType("TEXT")
                        .HasColumnName("list_id");

                    b.Property<string>("AgentPath")
                        .HasColumnType("TEXT")
                        .HasColumnName("agent_path");

                    b.Property<int?>("MaxTurns")
                        .HasColumnType("INTEGER")
                        .HasColumnName("max_turns");

                    b.Property<string>("Model")
                        .HasColumnType("TEXT")
                        .HasColumnName("model");

                    b.Property<string>("PermissionMode")
                        .HasColumnType("TEXT")
                        .HasColumnName("permission_mode");

                    b.Property<bool>("SerializeOnFileOverlap")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("serialize_on_file_overlap");

                    b.Property<string>("SessionSkills")
                        .HasColumnType("TEXT")
                        .HasColumnName("session_skills");

                    b.Property<string>("SystemPrompt")
                        .HasColumnType("TEXT")
                        .HasColumnName("system_prompt");

                    b.Property<string>("VerifyCommand")
                        .HasColumnType("TEXT")
                        .HasColumnName("verify_command");

                    b.HasKey("ListId");

                    b.ToTable("list_config", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.ListEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<string>("DefaultCommitType")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("chore")
                        .HasColumnName("default_commit_type");

                    b.Property<bool>("FindingsTracked")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("findings_tracked");

                    b.Property<bool>("IsManual")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("is_manual");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("name");

                    b.Property<int>("SortOrder")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0)
                        .HasColumnName("sort_order");

                    b.Property<string>("WorkingDir")
                        .HasColumnType("TEXT")
                        .HasColumnName("working_dir");

                    b.HasKey("Id");

                    b.HasIndex("SortOrder")
                        .HasDatabaseName("idx_lists_sort");

                    b.ToTable("lists", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.PrimeScheduleEntity", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<DateTimeOffset>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<int>("Days")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(31)
                        .HasColumnName("days_of_week");

                    b.Property<bool>("Enabled")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(true)
                        .HasColumnName("enabled");

                    b.Property<string>("Kind")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("ping")
                        .HasColumnName("action_kind");

                    b.Property<DateTimeOffset?>("LastRunAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("last_run_at");

                    b.Property<string>("PromptOverride")
                        .HasColumnType("TEXT")
                        .HasColumnName("prompt_override");

                    b.Property<TimeSpan>("TimeOfDay")
                        .HasColumnType("TEXT")
                        .HasColumnName("time_of_day");

                    b.HasKey("Id");

                    b.ToTable("prime_schedules", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.SessionSkillEntity", b =>
                {
                    b.Property<string>("Name")
                        .HasColumnType("TEXT")
                        .HasColumnName("name");

                    b.Property<DateTimeOffset>("AddedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("added_at");

                    b.Property<string>("Description")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("description");

                    b.Property<string>("PinnedRef")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("pinned_ref");

                    b.Property<string>("SourceUrl")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("source_url");

                    b.Property<string>("Subpath")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("subpath");

                    b.HasKey("Name");

                    b.ToTable("session_skills", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.SubtaskEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<bool>("Completed")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("completed");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<int>("OrderNum")
                        .HasColumnType("INTEGER")
                        .HasColumnName("order_num");

                    b.Property<string>("TaskId")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("task_id");

                    b.Property<string>("Title")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("title");

                    b.HasKey("Id");

                    b.HasIndex("TaskId")
                        .HasDatabaseName("idx_subtasks_task_id");

                    b.ToTable("subtasks", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskAttachmentEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<long>("ByteSize")
                        .HasColumnType("INTEGER")
                        .HasColumnName("byte_size");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<string>("FileName")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("file_name");

                    b.Property<string>("TaskId")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("task_id");

                    b.HasKey("Id");

                    b.HasIndex("TaskId")
                        .HasDatabaseName("idx_task_attachments_task_id");

                    b.ToTable("task_attachments", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<string>("AgentPath")
                        .HasColumnType("TEXT")
                        .HasColumnName("agent_path");

                    b.Property<string>("BlockedByTaskId")
                        .HasColumnType("TEXT")
                        .HasColumnName("blocked_by_task_id");

                    b.Property<string>("CommitType")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("chore")
                        .HasColumnName("commit_type");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<string>("CreatedBy")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_by");

                    b.Property<string>("DependsOnTaskId")
                        .HasColumnType("TEXT")
                        .HasColumnName("depends_on_task_id");

                    b.Property<string>("Description")
                        .HasColumnType("TEXT")
                        .HasColumnName("description");

                    b.Property<int?>("FailureMaxTurns")
                        .HasColumnType("INTEGER")
                        .HasColumnName("failure_max_turns");

                    b.Property<string>("FailureReason")
                        .HasColumnType("TEXT")
                        .HasColumnName("failure_reason");

                    b.Property<int?>("FailureTurnsUsed")
                        .HasColumnType("INTEGER")
                        .HasColumnName("failure_turns_used");

                    b.Property<DateTime?>("FinishedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("finished_at");

                    b.Property<string>("HandlerBaseCommit")
                        .HasColumnType("TEXT")
                        .HasColumnName("handler_base_commit");

                    b.Property<string>("HandlerHeadCommit")
                        .HasColumnType("TEXT")
                        .HasColumnName("handler_head_commit");

                    b.Property<string>("InteractiveSessionId")
                        .HasColumnType("TEXT")
                        .HasColumnName("interactive_session_id");

                    b.Property<bool>("IsManual")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("is_manual");

                    b.Property<bool>("IsMyDay")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("is_my_day");

                    b.Property<bool>("IsStarred")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("is_starred");

                    b.Property<string>("ListId")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("list_id");

                    b.Property<string>("LogPath")
                        .HasColumnType("TEXT")
                        .HasColumnName("log_path");

                    b.Property<int?>("MaxTurns")
                        .HasColumnType("INTEGER")
                        .HasColumnName("max_turns");

                    b.Property<string>("Model")
                        .HasColumnType("TEXT")
                        .HasColumnName("model");

                    b.Property<string>("Notes")
                        .HasColumnType("TEXT")
                        .HasColumnName("notes");

                    b.Property<int>("Number")
                        .HasColumnType("INTEGER")
                        .HasColumnName("number");

                    b.Property<string>("ParentTaskId")
                        .HasColumnType("TEXT")
                        .HasColumnName("parent_task_id");

                    b.Property<string>("PermissionMode")
                        .HasColumnType("TEXT")
                        .HasColumnName("permission_mode");

                    b.Property<DateTime?>("PlanningFinalizedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("planning_finalized_at");

                    b.Property<string>("PlanningPhase")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("none")
                        .HasColumnName("planning_phase");

                    b.Property<string>("PlanningSessionId")
                        .HasColumnType("TEXT")
                        .HasColumnName("planning_session_id");

                    b.Property<string>("PlanningSessionToken")
                        .HasColumnType("TEXT")
                        .HasColumnName("planning_session_token");

                    b.Property<string>("Result")
                        .HasColumnType("TEXT")
                        .HasColumnName("result");

                    b.Property<string>("ReviewFeedback")
                        .HasColumnType("TEXT")
                        .HasColumnName("review_feedback");

                    b.Property<int>("RoadblockCount")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0)
                        .HasColumnName("roadblock_count");

                    b.Property<DateTime?>("ScheduledFor")
                        .HasColumnType("TEXT")
                        .HasColumnName("scheduled_for");

                    b.Property<string>("ScopeGlobs")
                        .HasColumnType("TEXT")
                        .HasColumnName("scope_globs");

                    b.Property<string>("SessionSkills")
                        .HasColumnType("TEXT")
                        .HasColumnName("session_skills");

                    b.Property<int>("SortOrder")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0)
                        .HasColumnName("sort_order");

                    b.Property<DateTime?>("StartedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("started_at");

                    b.Property<string>("Status")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("status");

                    b.Property<string>("SystemPrompt")
                        .HasColumnType("TEXT")
                        .HasColumnName("system_prompt");

                    b.Property<string>("Title")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("title");

                    b.Property<DateTime?>("UsageLimitAutoContinuedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("usage_limit_auto_continued_at");

                    b.HasKey("Id");

                    b.HasIndex("BlockedByTaskId")
                        .HasDatabaseName("idx_tasks_blocked_by");

                    b.HasIndex("DependsOnTaskId")
                        .HasDatabaseName("idx_tasks_depends_on");

                    b.HasIndex("ListId")
                        .HasDatabaseName("idx_tasks_list_id");

                    b.HasIndex("Number")
                        .IsUnique()
                        .HasDatabaseName("idx_tasks_number");

                    b.HasIndex("ParentTaskId")
                        .HasDatabaseName("idx_tasks_parent_task_id");

                    b.HasIndex("Status")
                        .HasDatabaseName("idx_tasks_status");

                    b.HasIndex("ListId", "SortOrder")
                        .HasDatabaseName("idx_tasks_list_sort");

                    b.ToTable("tasks", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskRunEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<int?>("CacheReadTokens")
                        .HasColumnType("INTEGER")
                        .HasColumnName("cache_read_tokens");

                    b.Property<int?>("CacheWriteTokens")
                        .HasColumnType("INTEGER")
                        .HasColumnName("cache_write_tokens");

                    b.Property<string>("ErrorMarkdown")
                        .HasColumnType("TEXT")
                        .HasColumnName("error_markdown");

                    b.Property<string>("Errors")
                        .HasColumnType("TEXT")
                        .HasColumnName("errors");

                    b.Property<int?>("ExitCode")
                        .HasColumnType("INTEGER")
                        .HasColumnName("exit_code");

                    b.Property<DateTime?>("FinishedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("finished_at");

                    b.Property<bool>("IsRetry")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(false)
                        .HasColumnName("is_retry");

                    b.Property<string>("LogPath")
                        .HasColumnType("TEXT")
                        .HasColumnName("log_path");

                    b.Property<string>("Model")
                        .HasColumnType("TEXT")
                        .HasColumnName("model");

                    b.Property<string>("Prompt")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("prompt");

                    b.Property<string>("ResultMarkdown")
                        .HasColumnType("TEXT")
                        .HasColumnName("result_markdown");

                    b.Property<string>("ResultSubtype")
                        .HasColumnType("TEXT")
                        .HasColumnName("result_subtype");

                    b.Property<int>("RunNumber")
                        .HasColumnType("INTEGER")
                        .HasColumnName("run_number");

                    b.Property<string>("SessionId")
                        .HasColumnType("TEXT")
                        .HasColumnName("session_id");

                    b.Property<DateTime?>("StartedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("started_at");

                    b.Property<string>("StructuredOutputJson")
                        .HasColumnType("TEXT")
                        .HasColumnName("structured_output");

                    b.Property<string>("TaskId")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("task_id");

                    b.Property<string>("TerminalReason")
                        .HasColumnType("TEXT")
                        .HasColumnName("terminal_reason");

                    b.Property<int?>("TokensIn")
                        .HasColumnType("INTEGER")
                        .HasColumnName("tokens_in");

                    b.Property<int?>("TokensOut")
                        .HasColumnType("INTEGER")
                        .HasColumnName("tokens_out");

                    b.Property<int?>("TurnCount")
                        .HasColumnType("INTEGER")
                        .HasColumnName("turn_count");

                    b.HasKey("Id");

                    b.HasIndex("TaskId")
                        .HasDatabaseName("idx_task_runs_task_id");

                    b.ToTable("task_runs", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.WeekReportEntity", b =>
                {
                    b.Property<string>("Id")
                        .HasColumnType("TEXT")
                        .HasColumnName("id");

                    b.Property<DateOnly>("EndDate")
                        .HasColumnType("TEXT")
                        .HasColumnName("end_date");

                    b.Property<DateTime>("GeneratedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("generated_at");

                    b.Property<string>("Markdown")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("markdown");

                    b.Property<DateOnly>("StartDate")
                        .HasColumnType("TEXT")
                        .HasColumnName("start_date");

                    b.HasKey("Id");

                    b.HasIndex("StartDate", "EndDate")
                        .IsUnique();

                    b.ToTable("week_reports", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.WorktreeEntity", b =>
                {
                    b.Property<string>("TaskId")
                        .HasColumnType("TEXT")
                        .HasColumnName("task_id");

                    b.Property<string>("BaseCommit")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("base_commit");

                    b.Property<string>("BranchName")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("branch_name");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("TEXT")
                        .HasColumnName("created_at");

                    b.Property<string>("DiffStat")
                        .HasColumnType("TEXT")
                        .HasColumnName("diff_stat");

                    b.Property<string>("HeadCommit")
                        .HasColumnType("TEXT")
                        .HasColumnName("head_commit");

                    b.Property<string>("MergeCommit")
                        .HasColumnType("TEXT")
                        .HasColumnName("merge_commit");

                    b.Property<string>("Path")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("path");

                    b.Property<string>("State")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasDefaultValue("active")
                        .HasColumnName("state");

                    b.HasKey("TaskId");

                    b.ToTable("worktrees", (string)null);
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.ListConfigEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.ListEntity", "List")
                        .WithOne("Config")
                        .HasForeignKey("ClaudeDo.Data.Models.ListConfigEntity", "ListId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("List");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.SubtaskEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", "Task")
                        .WithMany("Subtasks")
                        .HasForeignKey("TaskId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Task");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskAttachmentEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", "Task")
                        .WithMany()
                        .HasForeignKey("TaskId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Task");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", null)
                        .WithMany()
                        .HasForeignKey("BlockedByTaskId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", null)
                        .WithMany()
                        .HasForeignKey("DependsOnTaskId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.HasOne("ClaudeDo.Data.Models.ListEntity", "List")
                        .WithMany("Tasks")
                        .HasForeignKey("ListId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", "Parent")
                        .WithMany("Children")
                        .HasForeignKey("ParentTaskId")
                        .OnDelete(DeleteBehavior.Restrict);

                    b.Navigation("List");

                    b.Navigation("Parent");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskRunEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", "Task")
                        .WithMany("Runs")
                        .HasForeignKey("TaskId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Task");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.WorktreeEntity", b =>
                {
                    b.HasOne("ClaudeDo.Data.Models.TaskEntity", "Task")
                        .WithOne("Worktree")
                        .HasForeignKey("ClaudeDo.Data.Models.WorktreeEntity", "TaskId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Task");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.ListEntity", b =>
                {
                    b.Navigation("Config");

                    b.Navigation("Tasks");
                });

            modelBuilder.Entity("ClaudeDo.Data.Models.TaskEntity", b =>
                {
                    b.Navigation("Children");

                    b.Navigation("Runs");

                    b.Navigation("Subtasks");

                    b.Navigation("Worktree");
                });
#pragma warning restore 612, 618
        }
    }
}
