summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorErik Johnston <erikj@jki.re>2017-08-21 16:51:56 +0100
committerGitHub <noreply@github.com>2017-08-21 16:51:56 +0100
commit2800983f3e81e3baa7dc45e4376a1f8a037097d7 (patch)
tree50070a4113aa75752802af7bbf0b9bb00fa877d0 /synapse/storage
parentMerge pull request #2426 from matrix-org/erikj/groups_fix_sync (diff)
parentUse BOOLEAN rather than TEXT type (diff)
downloadsynapse-2800983f3e81e3baa7dc45e4376a1f8a037097d7.tar.xz
Merge pull request #2410 from matrix-org/erikj/groups_publicise
Add ability to publicise group membership
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/group_server.py31
-rw-r--r--synapse/storage/schema/delta/43/group_server.sql1
2 files changed, 32 insertions, 0 deletions
diff --git a/synapse/storage/group_server.py b/synapse/storage/group_server.py

index 792a57deb5..5433063507 100644 --- a/synapse/storage/group_server.py +++ b/synapse/storage/group_server.py
@@ -835,11 +835,41 @@ class GroupServerStore(SQLBaseStore): desc="add_room_to_group", ) + def get_publicised_groups_for_user(self, user_id): + """Get all groups a user is publicising + """ + return self._simple_select_onecol( + table="local_group_membership", + keyvalues={ + "user_id": user_id, + "membership": "join", + "is_publicised": True, + }, + retcol="group_id", + desc="get_publicised_groups_for_user", + ) + + def update_group_publicity(self, group_id, user_id, publicise): + """Update whether the user is publicising their membership of the group + """ + return self._simple_update_one( + table="local_group_membership", + keyvalues={ + "group_id": group_id, + "user_id": user_id, + }, + updatevalues={ + "is_publicised": publicise, + }, + desc="update_group_publicity" + ) + @defer.inlineCallbacks def register_user_group_membership(self, group_id, user_id, membership, is_admin=False, content={}, local_attestation=None, remote_attestation=None, + is_publicised=False, ): """Registers that a local user is a member of a (local or remote) group. @@ -873,6 +903,7 @@ class GroupServerStore(SQLBaseStore): "user_id": user_id, "is_admin": is_admin, "membership": membership, + "is_publicised": is_publicised, "content": json.dumps(content), }, ) diff --git a/synapse/storage/schema/delta/43/group_server.sql b/synapse/storage/schema/delta/43/group_server.sql
index 92f3339c94..e74554381f 100644 --- a/synapse/storage/schema/delta/43/group_server.sql +++ b/synapse/storage/schema/delta/43/group_server.sql
@@ -150,6 +150,7 @@ CREATE TABLE local_group_membership ( user_id TEXT NOT NULL, is_admin BOOLEAN NOT NULL, membership TEXT NOT NULL, + is_publicised BOOLEAN NOT NULL, -- if the user is publicising their membership content TEXT NOT NULL );