diff options
author | Erik Johnston <erik@matrix.org> | 2019-07-01 17:55:11 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-07-02 12:09:04 +0100 |
commit | 8ee69f299cb3360de5c88f0c6b07525d35247fbd (patch) | |
tree | 5154b94b34b13fbe6aa871cd6b6854f9c5345f61 /synapse/storage/roommember.py | |
parent | fix async/await consentresource (#5585) (diff) | |
download | synapse-8ee69f299cb3360de5c88f0c6b07525d35247fbd.tar.xz |
Add basic function to get all data for a user out of synapse
Diffstat (limited to 'synapse/storage/roommember.py')
-rw-r--r-- | synapse/storage/roommember.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py index 8004aeb909..32cfd010a5 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py @@ -575,6 +575,26 @@ class RoomMemberWorkerStore(EventsWorkerStore): count = yield self.runInteraction("did_forget_membership", f) defer.returnValue(count == 0) + @defer.inlineCallbacks + def get_rooms_user_has_been_in(self, user_id): + """Get all rooms that the user has ever been in. + + Args: + user_id (str) + + Returns: + Deferred[set[str]]: Set of room IDs. + """ + + room_ids = yield self._simple_select_onecol( + table="room_memberships", + keyvalues={"membership": Membership.JOIN, "user_id": user_id}, + retcol="room_id", + desc="get_rooms_user_has_been_in", + ) + + return set(room_ids) + class RoomMemberStore(RoomMemberWorkerStore): def __init__(self, db_conn, hs): |