diff --git a/database/upgrades/04-attachment-fix.sql b/database/upgrades/04-attachment-fix.postgres.sql similarity index 100% rename from database/upgrades/04-attachment-fix.sql rename to database/upgrades/04-attachment-fix.postgres.sql diff --git a/database/upgrades/04-attachment-fix.sqlite.sql b/database/upgrades/04-attachment-fix.sqlite.sql new file mode 100644 index 0000000..88c4386 --- /dev/null +++ b/database/upgrades/04-attachment-fix.sqlite.sql @@ -0,0 +1,45 @@ +-- v4: Fix storing attachments +CREATE TABLE new_message ( + dcid TEXT, + dc_attachment_id TEXT, + dc_edit_index INTEGER, + dc_chan_id TEXT, + dc_chan_receiver TEXT, + dc_sender TEXT NOT NULL, + timestamp BIGINT NOT NULL, + dc_thread_id TEXT, + + mxid TEXT NOT NULL UNIQUE, + + PRIMARY KEY (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver), + CONSTRAINT message_portal_fkey FOREIGN KEY (dc_chan_id, dc_chan_receiver) REFERENCES portal (dcid, receiver) ON DELETE CASCADE +); +INSERT INTO new_message (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver, dc_sender, timestamp, dc_thread_id, mxid) + SELECT dcid, '', 0, dc_chan_id, dc_chan_receiver, dc_sender, timestamp, dc_thread_id, mxid FROM message; +INSERT INTO new_message (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver, dc_sender, timestamp, dc_thread_id, mxid) + SELECT message.dcid, attachment.dcid, 0, attachment.dc_chan_id, attachment.dc_chan_receiver, message.dc_sender, message.timestamp, attachment.dc_thread_id, attachment.mxid + FROM attachment LEFT JOIN message ON attachment.dc_msg_id = message.dcid; +DROP TABLE attachment; +DROP TABLE message; +ALTER TABLE new_message RENAME TO message; + +CREATE TABLE new_reaction ( + dc_chan_id TEXT, + dc_chan_receiver TEXT, + dc_msg_id TEXT, + dc_sender TEXT, + dc_emoji_name TEXT, + dc_thread_id TEXT, + + dc_first_attachment_id TEXT NOT NULL, + _dc_first_edit_index INTEGER NOT NULL DEFAULT 0, + + mxid TEXT NOT NULL UNIQUE, + + PRIMARY KEY (dc_chan_id, dc_chan_receiver, dc_msg_id, dc_sender, dc_emoji_name), + CONSTRAINT reaction_message_fkey FOREIGN KEY (dc_msg_id, dc_first_attachment_id, _dc_first_edit_index, dc_chan_id, dc_chan_receiver) REFERENCES message (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver) ON DELETE CASCADE +); +INSERT INTO new_reaction (dc_chan_id, dc_chan_receiver, dc_msg_id, dc_sender, dc_emoji_name, dc_thread_id, dc_first_attachment_id, mxid) +SELECT dc_chan_id, dc_chan_receiver, dc_msg_id, dc_sender, dc_emoji_name, dc_thread_id, '', mxid FROM reaction; +DROP TABLE reaction; +ALTER TABLE new_reaction RENAME TO reaction; diff --git a/go.mod b/go.mod index 762c026..61c79bb 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/yuin/goldmark v1.4.12 maunium.net/go/maulogger/v2 v2.3.2 - maunium.net/go/mautrix v0.11.1-0.20220621174128-b64dc2427d45 + maunium.net/go/mautrix v0.11.1-0.20220627081123-442224f153d1 ) require ( diff --git a/go.sum b/go.sum index c115abf..4483922 100644 --- a/go.sum +++ b/go.sum @@ -58,5 +58,5 @@ maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= maunium.net/go/maulogger/v2 v2.3.2 h1:1XmIYmMd3PoQfp9J+PaHhpt80zpfmMqaShzUTC7FwY0= maunium.net/go/maulogger/v2 v2.3.2/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A= -maunium.net/go/mautrix v0.11.1-0.20220621174128-b64dc2427d45 h1:3ld9X4COzaeGrfAAUYD5f4is0siPGzodTFtX/+o8Q50= -maunium.net/go/mautrix v0.11.1-0.20220621174128-b64dc2427d45/go.mod h1:CiKpMhAx5QZFHK03jpWb0iKI3sGU8x6+LfsOjDrcO8I= +maunium.net/go/mautrix v0.11.1-0.20220627081123-442224f153d1 h1:K6mjbN60uri8C68PNAzF+Ej70ecDzuonsWqgztKVrM8= +maunium.net/go/mautrix v0.11.1-0.20220627081123-442224f153d1/go.mod h1:CiKpMhAx5QZFHK03jpWb0iKI3sGU8x6+LfsOjDrcO8I=