lmao sqlite doesn't support altering fk inline
Jes Olson j3s@c3f.net
Fri, 11 Apr 2025 16:30:18 -0500
1 files changed,
52 insertions(+),
3 deletions(-)
M
sqlite/migrations/3_add_foreign_keys.sql
→
sqlite/migrations/3_add_foreign_keys.sql
@@ -1,8 +1,57 @@
-ALTER TABLE subscribe ADD CONSTRAINT fk_subscribe_user FOREIGN KEY (user_id) REFERENCES user (id); +-- 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; -ALTER TABLE subscribe ADD CONSTRAINT fk_subscribe_feed FOREIGN KEY (feed_id) REFERENCES feed (id); +-- Rename new tables to original names +ALTER TABLE subscribe_new +RENAME TO subscribe; -ALTER TABLE saved_item ADD CONSTRAINT fk_saved_item_user FOREIGN KEY (user_id) REFERENCES user (id); +ALTER TABLE saved_item_new +RENAME TO saved_item; CREATE INDEX IF NOT EXISTS idx_subscribe_user_feed ON subscribe (user_id, feed_id);