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);
|