62 lines
2.4 KiB
SQL
62 lines
2.4 KiB
SQL
-- Migration: Eliminate plans table
|
|
-- Plans are now decompose tasks with parentTaskId for child relationships
|
|
|
|
PRAGMA foreign_keys=OFF;--> statement-breakpoint
|
|
|
|
-- Step 1: Create new tasks table with parent_task_id instead of plan_id
|
|
CREATE TABLE `__new_tasks` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`phase_id` text,
|
|
`initiative_id` text,
|
|
`parent_task_id` text,
|
|
`name` text NOT NULL,
|
|
`description` text,
|
|
`type` text DEFAULT 'auto' NOT NULL,
|
|
`category` text DEFAULT 'execute' NOT NULL,
|
|
`priority` text DEFAULT 'medium' NOT NULL,
|
|
`status` text DEFAULT 'pending' NOT NULL,
|
|
`requires_approval` integer,
|
|
`order` integer DEFAULT 0 NOT NULL,
|
|
`created_at` integer NOT NULL,
|
|
`updated_at` integer NOT NULL,
|
|
FOREIGN KEY (`phase_id`) REFERENCES `phases`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`initiative_id`) REFERENCES `initiatives`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`parent_task_id`) REFERENCES `__new_tasks`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);--> statement-breakpoint
|
|
|
|
-- Step 2: Insert plans as decompose tasks FIRST (so plan IDs exist as task IDs for foreign key)
|
|
INSERT INTO `__new_tasks`("id", "phase_id", "initiative_id", "parent_task_id", "name", "description", "type", "category", "priority", "status", "requires_approval", "order", "created_at", "updated_at")
|
|
SELECT
|
|
"id",
|
|
"phase_id",
|
|
NULL,
|
|
NULL,
|
|
"name",
|
|
"description",
|
|
'auto',
|
|
'decompose',
|
|
'medium',
|
|
CASE
|
|
WHEN "status" = 'completed' THEN 'completed'
|
|
WHEN "status" = 'in_progress' THEN 'in_progress'
|
|
ELSE 'pending'
|
|
END,
|
|
NULL,
|
|
"number",
|
|
"created_at",
|
|
"updated_at"
|
|
FROM `plans`;--> statement-breakpoint
|
|
|
|
-- Step 3: Copy existing tasks, converting plan_id to parent_task_id
|
|
INSERT INTO `__new_tasks`("id", "phase_id", "initiative_id", "parent_task_id", "name", "description", "type", "category", "priority", "status", "requires_approval", "order", "created_at", "updated_at")
|
|
SELECT "id", "phase_id", "initiative_id", "plan_id", "name", "description", "type", "category", "priority", "status", "requires_approval", "order", "created_at", "updated_at" FROM `tasks`;--> statement-breakpoint
|
|
|
|
-- Step 4: Drop old tasks table and rename new one
|
|
DROP TABLE `tasks`;--> statement-breakpoint
|
|
ALTER TABLE `__new_tasks` RENAME TO `tasks`;--> statement-breakpoint
|
|
|
|
-- Step 5: Drop plans table
|
|
DROP TABLE `plans`;--> statement-breakpoint
|
|
|
|
PRAGMA foreign_keys=ON;
|