Răsfoiți Sursa

Add untested SQLite support for attachment db upgrade

Tulir Asokan 3 ani în urmă
părinte
comite
91e1baaceb

+ 0 - 0
database/upgrades/04-attachment-fix.sql → database/upgrades/04-attachment-fix.postgres.sql


+ 45 - 0
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;

+ 1 - 1
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 (

+ 2 - 2
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=