From b3eb39a28b7b90e6df8542c1fa3e673e011082f8 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Thu, 23 Apr 2026 17:48:10 +0200 Subject: [PATCH] feat(data): migration AddPlanningSupport --- .../20260423154708_AddPlanningSupport.cs | 80 +++++++++++++++++++ .../ClaudeDoDbContextModelSnapshot.cs | 28 +++++++ 2 files changed, 108 insertions(+) create mode 100644 src/ClaudeDo.Data/Migrations/20260423154708_AddPlanningSupport.cs diff --git a/src/ClaudeDo.Data/Migrations/20260423154708_AddPlanningSupport.cs b/src/ClaudeDo.Data/Migrations/20260423154708_AddPlanningSupport.cs new file mode 100644 index 0000000..ef24f78 --- /dev/null +++ b/src/ClaudeDo.Data/Migrations/20260423154708_AddPlanningSupport.cs @@ -0,0 +1,80 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ClaudeDo.Data.Migrations +{ + /// + public partial class AddPlanningSupport : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "parent_task_id", + table: "tasks", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "planning_finalized_at", + table: "tasks", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "planning_session_id", + table: "tasks", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "planning_session_token", + table: "tasks", + type: "TEXT", + nullable: true); + + migrationBuilder.CreateIndex( + name: "idx_tasks_parent_task_id", + table: "tasks", + column: "parent_task_id"); + + migrationBuilder.AddForeignKey( + name: "FK_tasks_tasks_parent_task_id", + table: "tasks", + column: "parent_task_id", + principalTable: "tasks", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_tasks_tasks_parent_task_id", + table: "tasks"); + + migrationBuilder.DropIndex( + name: "idx_tasks_parent_task_id", + table: "tasks"); + + migrationBuilder.DropColumn( + name: "parent_task_id", + table: "tasks"); + + migrationBuilder.DropColumn( + name: "planning_finalized_at", + table: "tasks"); + + migrationBuilder.DropColumn( + name: "planning_session_id", + table: "tasks"); + + migrationBuilder.DropColumn( + name: "planning_session_token", + table: "tasks"); + } + } +} diff --git a/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs b/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs index eee421b..08926d8 100644 --- a/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs +++ b/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs @@ -273,6 +273,22 @@ namespace ClaudeDo.Data.Migrations .HasColumnType("TEXT") .HasColumnName("notes"); + b.Property("ParentTaskId") + .HasColumnType("TEXT") + .HasColumnName("parent_task_id"); + + b.Property("PlanningFinalizedAt") + .HasColumnType("TEXT") + .HasColumnName("planning_finalized_at"); + + b.Property("PlanningSessionId") + .HasColumnType("TEXT") + .HasColumnName("planning_session_id"); + + b.Property("PlanningSessionToken") + .HasColumnType("TEXT") + .HasColumnName("planning_session_token"); + b.Property("Result") .HasColumnType("TEXT") .HasColumnName("result"); @@ -310,6 +326,9 @@ namespace ClaudeDo.Data.Migrations b.HasIndex("ListId") .HasDatabaseName("idx_tasks_list_id"); + b.HasIndex("ParentTaskId") + .HasDatabaseName("idx_tasks_parent_task_id"); + b.HasIndex("Status") .HasDatabaseName("idx_tasks_status"); @@ -502,7 +521,14 @@ namespace ClaudeDo.Data.Migrations .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 => @@ -566,6 +592,8 @@ namespace ClaudeDo.Data.Migrations modelBuilder.Entity("ClaudeDo.Data.Models.TaskEntity", b => { + b.Navigation("Children"); + b.Navigation("Runs"); b.Navigation("Subtasks");