sqlite/migrations/3_add_foreign_keys.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
-- lmao sqlite doesn't support altering fk relationships inline CREATE TABLE IF NOT EXISTS subscribe_new ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, feed_id INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES user (id), FOREIGN KEY (feed_id) REFERENCES feed (id) ); CREATE TABLE IF NOT EXISTS saved_item_new ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, item_url TEXT NOT NULL, item_title TEXT NOT NULL, archive_url TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES user (id) ); -- Copy data from old tables to new tables INSERT INTO subscribe_new SELECT id, user_id, feed_id, created_at FROM subscribe; INSERT INTO saved_item_new SELECT id, user_id, item_url, item_title, archive_url, created_at FROM saved_item; -- Drop old tables DROP TABLE subscribe; DROP TABLE saved_item; -- Rename new tables to original names ALTER TABLE subscribe_new RENAME TO subscribe; ALTER TABLE saved_item_new RENAME TO saved_item; CREATE INDEX IF NOT EXISTS idx_subscribe_user_feed ON subscribe (user_id, feed_id); CREATE INDEX IF NOT EXISTS idx_saved_item_user ON saved_item (user_id); CREATE INDEX IF NOT EXISTS idx_saved_item_url ON saved_item (item_url); CREATE INDEX IF NOT EXISTS idx_saved_item_created ON saved_item (created_at);