51 lines
1.9 KiB
MySQL
51 lines
1.9 KiB
MySQL
|
-- v4: Drop conversation ID from message primary key
|
||
|
-- transaction: off
|
||
|
|
||
|
PRAGMA foreign_keys = OFF;
|
||
|
BEGIN TRANSACTION;
|
||
|
|
||
|
CREATE TABLE message_new (
|
||
|
conv_id TEXT NOT NULL,
|
||
|
conv_receiver BIGINT NOT NULL,
|
||
|
id TEXT NOT NULL,
|
||
|
mxid TEXT NOT NULL,
|
||
|
mx_room TEXT NOT NULL,
|
||
|
sender TEXT NOT NULL,
|
||
|
timestamp BIGINT NOT NULL,
|
||
|
status jsonb NOT NULL,
|
||
|
|
||
|
PRIMARY KEY (conv_receiver, id),
|
||
|
CONSTRAINT message_portal_fkey FOREIGN KEY (conv_id, conv_receiver) REFERENCES portal(id, receiver) ON DELETE CASCADE,
|
||
|
CONSTRAINT message_mxid_unique UNIQUE (mxid)
|
||
|
);
|
||
|
INSERT INTO message_new (conv_id, conv_receiver, id, mxid, mx_room, sender, timestamp, status)
|
||
|
SELECT conv_id, conv_receiver, id, mxid, (SELECT mxid FROM portal WHERE id=conv_id AND receiver=conv_receiver), sender, timestamp, status
|
||
|
FROM message
|
||
|
WHERE status->>'type' NOT IN (101, 102, 103, 104, 105, 106, 107, 110, 111, 112, 113, 114);
|
||
|
DROP TABLE message;
|
||
|
ALTER TABLE message_new RENAME TO message;
|
||
|
CREATE INDEX message_conv_timestamp_idx ON message(conv_id, conv_receiver, timestamp);
|
||
|
|
||
|
|
||
|
CREATE TABLE reaction_new (
|
||
|
conv_id TEXT NOT NULL,
|
||
|
conv_receiver BIGINT NOT NULL,
|
||
|
msg_id TEXT NOT NULL,
|
||
|
sender TEXT NOT NULL,
|
||
|
reaction TEXT NOT NULL,
|
||
|
mxid TEXT NOT NULL,
|
||
|
|
||
|
PRIMARY KEY (conv_receiver, msg_id, sender),
|
||
|
CONSTRAINT reaction_message_fkey FOREIGN KEY (conv_receiver, msg_id) REFERENCES message(conv_receiver, id) ON DELETE CASCADE,
|
||
|
CONSTRAINT reaction_mxid_unique UNIQUE (mxid)
|
||
|
);
|
||
|
INSERT INTO reaction_new (conv_id, conv_receiver, msg_id, sender, reaction, mxid)
|
||
|
SELECT conv_id, conv_receiver, msg_id, sender, reaction, mxid
|
||
|
FROM reaction;
|
||
|
DROP TABLE reaction;
|
||
|
ALTER TABLE reaction_new RENAME TO reaction;
|
||
|
|
||
|
PRAGMA foreign_key_check;
|
||
|
COMMIT;
|
||
|
PRAGMA FOREIGN_KEYS = ON;
|