{-# LANGUAGE QuasiQuotes #-} module Simplex.Messaging.Agent.Store.SQLite.Migrations.M20250322_short_links where import Database.SQLite.Simple (Query) import Database.SQLite.Simple.QQ (sql) m20250322_short_links :: Query m20250322_short_links :: Query m20250322_short_links = [sql| ALTER TABLE rcv_queues ADD COLUMN link_id BLOB; ALTER TABLE rcv_queues ADD COLUMN link_key BLOB; ALTER TABLE rcv_queues ADD COLUMN link_priv_sig_key BLOB; ALTER TABLE rcv_queues ADD COLUMN link_enc_fixed_data BLOB; CREATE UNIQUE INDEX idx_rcv_queues_link_id ON rcv_queues(host, port, link_id); ALTER TABLE rcv_queues ADD COLUMN queue_mode TEXT; UPDATE rcv_queues SET queue_mode = 'M' WHERE snd_secure = 1; ALTER TABLE rcv_queues DROP COLUMN snd_secure; ALTER TABLE snd_queues ADD COLUMN queue_mode TEXT; UPDATE snd_queues SET queue_mode = 'M' WHERE snd_secure = 1; ALTER TABLE snd_queues DROP COLUMN snd_secure; CREATE TABLE inv_short_links( inv_short_link_id INTEGER PRIMARY KEY AUTOINCREMENT, host TEXT NOT NULL, port TEXT NOT NULL, server_key_hash BLOB, link_id BLOB NOT NULL, link_key BLOB NOT NULL, snd_private_key BLOB NOT NULL, snd_id BLOB, FOREIGN KEY(host, port) REFERENCES servers ON DELETE RESTRICT ON UPDATE CASCADE ); CREATE UNIQUE INDEX idx_inv_short_links_link_id ON inv_short_links(host, port, link_id); |] down_m20250322_short_links :: Query down_m20250322_short_links :: Query down_m20250322_short_links = [sql| DROP INDEX idx_rcv_queues_link_id; ALTER TABLE rcv_queues DROP COLUMN link_id; ALTER TABLE rcv_queues DROP COLUMN link_key; ALTER TABLE rcv_queues DROP COLUMN link_priv_sig_key; ALTER TABLE rcv_queues DROP COLUMN link_enc_fixed_data; DROP INDEX idx_inv_short_links_link_id; DROP TABLE inv_short_links; ALTER TABLE rcv_queues ADD COLUMN snd_secure INTEGER NOT NULL DEFAULT 0; UPDATE rcv_queues SET snd_secure = 1 WHERE queue_mode = 'M'; ALTER TABLE rcv_queues DROP COLUMN queue_mode; ALTER TABLE snd_queues ADD COLUMN snd_secure INTEGER NOT NULL DEFAULT 0; UPDATE snd_queues SET snd_secure = 1 WHERE queue_mode = 'M'; ALTER TABLE snd_queues DROP COLUMN queue_mode; |]