From e8a9ed8a520fde4a1b3874f55f86cbb2e88c10db Mon Sep 17 00:00:00 2001 From: Joshua Hong Date: Wed, 21 Jul 2021 14:42:53 -0400 Subject: [PATCH] Update displayname column --- .../20210622210900_add_displayname_column.go | 41 ++++++++++++++++++- sytest-whitelist | 3 ++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/roomserver/storage/sqlite3/deltas/20210622210900_add_displayname_column.go b/roomserver/storage/sqlite3/deltas/20210622210900_add_displayname_column.go index e144471d4..c51fbcf60 100644 --- a/roomserver/storage/sqlite3/deltas/20210622210900_add_displayname_column.go +++ b/roomserver/storage/sqlite3/deltas/20210622210900_add_displayname_column.go @@ -26,7 +26,26 @@ func LoadAddDisplaynameColumn(m *sqlutil.Migrations) { } func UpAddDisplaynameColumn(tx *sql.Tx) error { - _, err := tx.Exec(`ALTER TABLE roomserver_membership ADD COLUMN IF NOT EXISTS displayname TEXT DEFAULT '';`) + _, err := tx.Exec(` ALTER TABLE roomserver_membership RENAME TO roomserver_membership_tmp; +CREATE TABLE IF NOT EXISTS roomserver_membership ( + room_nid INTEGER NOT NULL, + target_nid INTEGER NOT NULL, + sender_nid INTEGER NOT NULL DEFAULT 0, + membership_nid INTEGER NOT NULL DEFAULT 1, + event_nid INTEGER NOT NULL DEFAULT 0, + target_local BOOLEAN NOT NULL DEFAULT false, + forgotten BOOLEAN NOT NULL DEFAULT false, + displayname TEXT NOT NULL DEFAULT '', + UNIQUE (room_nid, target_nid) +); +INSERT + INTO roomserver_membership ( + room_nid, target_nid, sender_nid, membership_nid, event_nid, target_local, forgotten + ) SELECT + room_nid, target_nid, sender_nid, membership_nid, event_nid, target_local, forgotten + FROM roomserver_membership_tmp +; +DROP TABLE roomserver_membership_tmp;`) if err != nil { return fmt.Errorf("failed to execute upgrade: %w", err) } @@ -34,7 +53,25 @@ func UpAddDisplaynameColumn(tx *sql.Tx) error { } func DownAddDisplaynameColumn(tx *sql.Tx) error { - _, err := tx.Exec(`ALTER TABLE roomserver_membership DROP COLUMN IF EXISTS displayname;`) + _, err := tx.Exec(` ALTER TABLE roomserver_membership RENAME TO roomserver_membership_tmp; +CREATE TABLE IF NOT EXISTS roomserver_membership ( + room_nid INTEGER NOT NULL, + target_nid INTEGER NOT NULL, + sender_nid INTEGER NOT NULL DEFAULT 0, + membership_nid INTEGER NOT NULL DEFAULT 1, + event_nid INTEGER NOT NULL DEFAULT 0, + target_local BOOLEAN NOT NULL DEFAULT false, + forgotten BOOLEAN NOT NULL DEFAULT false, + UNIQUE (room_nid, target_nid) +); +INSERT + INTO roomserver_membership ( + room_nid, target_nid, sender_nid, membership_nid, event_nid, target_local, forgotten + ) SELECT + room_nid, target_nid, sender_nid, membership_nid, event_nid, target_local, forgotten + FROM roomserver_membership_tmp +; +DROP TABLE roomserver_membership_tmp;`) if err != nil { return fmt.Errorf("failed to execute downgrade: %w", err) } diff --git a/sytest-whitelist b/sytest-whitelist index 35a1e321a..0d5946e58 100644 --- a/sytest-whitelist +++ b/sytest-whitelist @@ -521,3 +521,6 @@ Can generate a openid access_token that can be exchanged for information about a Invalid openid access tokens are rejected Requests to userinfo without access tokens are rejected User in private room doesn't appear in user directory +User joining then leaving public room appears and dissappears from directory +User in remote room doesn't appear in user directory after server left room +User in shared private room does appear in user directory until leave