summaryrefslogtreecommitdiff
path: root/makima/migrations/20250106000000_add_task_depth.sql
blob: e0fdd03f1b032047fdfc781e3e1f4e527925ed14 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- Add depth column for task hierarchy (0=top-level, 1=subtask, 2=sub-subtask)
-- Max depth is 2 (3 levels total)

ALTER TABLE tasks ADD COLUMN depth INTEGER NOT NULL DEFAULT 0;
ALTER TABLE tasks ADD CONSTRAINT tasks_depth_check CHECK (depth >= 0 AND depth < 3);

-- Backfill existing tasks based on parent chain
WITH RECURSIVE task_depth AS (
    SELECT id, parent_task_id, 0 as calculated_depth
    FROM tasks
    WHERE parent_task_id IS NULL
    UNION ALL
    SELECT t.id, t.parent_task_id, td.calculated_depth + 1
    FROM tasks t
    JOIN task_depth td ON t.parent_task_id = td.id
)
UPDATE tasks SET depth = task_depth.calculated_depth
FROM task_depth WHERE tasks.id = task_depth.id;

-- Index for depth queries
CREATE INDEX idx_tasks_depth ON tasks(depth);