0003_blocker_fk.up.sql

 1-- Add FOREIGN KEY (blocker_id) REFERENCES tasks(id) to the blockers table.
 2-- SQLite has no ALTER TABLE ADD CONSTRAINT, so we rebuild.
 3
 4-- Drop dangling blocker_id rows that reference nonexistent tasks.
 5DELETE FROM blockers WHERE blocker_id NOT IN (SELECT id FROM tasks);
 6
 7CREATE TABLE blockers_new (
 8    task_id    TEXT,
 9    blocker_id TEXT,
10    PRIMARY KEY (task_id, blocker_id),
11    FOREIGN KEY (task_id)    REFERENCES tasks(id),
12    FOREIGN KEY (blocker_id) REFERENCES tasks(id)
13);
14
15INSERT INTO blockers_new (task_id, blocker_id)
16    SELECT task_id, blocker_id FROM blockers;
17
18DROP TABLE blockers;
19
20ALTER TABLE blockers_new RENAME TO blockers;