mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
bridgev2/userlogin: delete disappearing messages when deleting portals (#374)
This commit is contained in:
parent
a121a6101c
commit
bf33889eab
3 changed files with 39 additions and 2 deletions
|
|
@ -1,4 +1,4 @@
|
|||
-- v0 -> v20 (compatible with v9+): Latest revision
|
||||
-- v0 -> v21 (compatible with v9+): Latest revision
|
||||
CREATE TABLE "user" (
|
||||
bridge_id TEXT NOT NULL,
|
||||
mxid TEXT NOT NULL,
|
||||
|
|
@ -63,6 +63,7 @@ CREATE TABLE portal (
|
|||
REFERENCES user_login (bridge_id, id)
|
||||
ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
CREATE UNIQUE INDEX portal_bridge_mxid_idx ON portal (bridge_id, mxid);
|
||||
|
||||
CREATE TABLE ghost (
|
||||
bridge_id TEXT NOT NULL,
|
||||
|
|
@ -128,7 +129,11 @@ CREATE TABLE disappearing_message (
|
|||
timer BIGINT NOT NULL,
|
||||
disappear_at BIGINT,
|
||||
|
||||
PRIMARY KEY (bridge_id, mxid)
|
||||
PRIMARY KEY (bridge_id, mxid),
|
||||
CONSTRAINT disappearing_message_portal_fkey
|
||||
FOREIGN KEY (bridge_id, mx_room)
|
||||
REFERENCES portal (bridge_id, mxid)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE reaction (
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
-- v21 (compatible with v9+): Add foreign key constraint from disappearing_message.mx_room to portals.mxid
|
||||
CREATE UNIQUE INDEX portal_bridge_mxid_idx ON portal (bridge_id, mxid);
|
||||
DELETE FROM disappearing_message WHERE mx_room NOT IN (SELECT mxid FROM portal WHERE mxid IS NOT NULL);
|
||||
ALTER TABLE disappearing_message
|
||||
ADD CONSTRAINT disappearing_message_portal_fkey
|
||||
FOREIGN KEY (bridge_id, mx_room)
|
||||
REFERENCES portal (bridge_id, mxid)
|
||||
ON DELETE CASCADE;
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
-- v21 (compatible with v9+): Add foreign key constraint from disappearing_message.mx_room to portals.mxid
|
||||
CREATE UNIQUE INDEX portal_bridge_mxid_idx ON portal (bridge_id, mxid);
|
||||
CREATE TABLE disappearing_message_new (
|
||||
bridge_id TEXT NOT NULL,
|
||||
mx_room TEXT NOT NULL,
|
||||
mxid TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
timer BIGINT NOT NULL,
|
||||
disappear_at BIGINT,
|
||||
|
||||
PRIMARY KEY (bridge_id, mxid),
|
||||
CONSTRAINT disappearing_message_portal_fkey
|
||||
FOREIGN KEY (bridge_id, mx_room)
|
||||
REFERENCES portal (bridge_id, mxid)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
WITH portal_mxids AS (SELECT mxid FROM portal WHERE mxid IS NOT NULL)
|
||||
INSERT INTO disappearing_message_new (bridge_id, mx_room, mxid, type, timer, disappear_at)
|
||||
SELECT bridge_id, mx_room, mxid, type, timer, disappear_at
|
||||
FROM disappearing_message WHERE mx_room IN portal_mxids;
|
||||
|
||||
DROP TABLE disappearing_message;
|
||||
ALTER TABLE disappearing_message_new RENAME TO disappearing_message;
|
||||
Loading…
Add table
Add a link
Reference in a new issue