using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Nexus.Api.Data; #nullable disable namespace Nexus.Api.Migrations { /// [DbContext(typeof(NexusDbContext))] [Migration("20260618233000_AddTaskParentChild")] public partial class AddTaskParentChild : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { // This historical migration originally lacked EF discovery // metadata. Keep the catch-up operations idempotent so existing // installations and fresh PostgreSQL databases converge safely. migrationBuilder.Sql( """ ALTER TABLE "Tasks" ADD COLUMN IF NOT EXISTS "ParentTaskId" uuid; CREATE INDEX IF NOT EXISTS "IX_Tasks_ParentTaskId" ON "Tasks" ("ParentTaskId"); DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'FK_Tasks_Tasks_ParentTaskId' AND conrelid = '"Tasks"'::regclass ) THEN ALTER TABLE "Tasks" ADD CONSTRAINT "FK_Tasks_Tasks_ParentTaskId" FOREIGN KEY ("ParentTaskId") REFERENCES "Tasks" ("Id") ON DELETE SET NULL; END IF; END $$; """); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.Sql( """ ALTER TABLE "Tasks" DROP CONSTRAINT IF EXISTS "FK_Tasks_Tasks_ParentTaskId"; DROP INDEX IF EXISTS "IX_Tasks_ParentTaskId"; ALTER TABLE "Tasks" DROP COLUMN IF EXISTS "ParentTaskId"; """); } } }