small pixel drawing of a pufferfish vore

lmao sqlite doesn't support altering fk inline
Jes Olson j3s@c3f.net
Fri, 11 Apr 2025 16:30:18 -0500
commit

d607a51ceb30d6a54ee4bf5dc5bb0f32131d7153

parent

4d8e219a9e0d503b05a46cdfc64ec5e4d139cb81

1 files changed, 52 insertions(+), 3 deletions(-)

jump to
M sqlite/migrations/3_add_foreign_keys.sqlsqlite/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);