1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- Backup backlog_tasks (DROP TABLE backlogs cascades the foreign key delete)
CREATE TEMPORARY TABLE backlog_tasks_backup AS SELECT * FROM backlog_tasks;

-- Rebuild backlogs without the key column, with UNIQUE on name directly
CREATE TABLE backlogs_new (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL UNIQUE,
    created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
    updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
);

INSERT INTO backlogs_new (id, name, created_at, updated_at)
SELECT id, name, created_at, updated_at FROM backlogs;

-- Drop the separate index and old table
DROP INDEX IF EXISTS idx_backlogs_name;
DROP TABLE backlogs;
ALTER TABLE backlogs_new RENAME TO backlogs;

-- Restore backlog_tasks
INSERT INTO backlog_tasks SELECT * FROM backlog_tasks_backup;
DROP TABLE backlog_tasks_backup;