summary refs log tree commit diff
path: root/synapse/storage/roommember.py
diff options
context:
space:
mode:
authorAmber Brown <hawkowl@atleastfornow.net>2019-05-21 14:30:47 -0500
committerAmber Brown <hawkowl@atleastfornow.net>2019-05-21 14:30:47 -0500
commit8fe26db968dd833976f59c7b122611896a211c30 (patch)
treefcb93235ee834737a451676ddbcb102d4afae538 /synapse/storage/roommember.py
parentSHHS - Room Join Complexity (#5072) (diff)
parentRoom Statistics (#4338) (diff)
downloadsynapse-8fe26db968dd833976f59c7b122611896a211c30.tar.xz
Merge remote-tracking branch 'origin/develop' into HEAD
Diffstat (limited to 'synapse/storage/roommember.py')
-rw-r--r--synapse/storage/roommember.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py

index 57df17bcc2..4bd1669458 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py
@@ -142,6 +142,38 @@ class RoomMemberWorkerStore(EventsWorkerStore): return self.runInteraction("get_room_summary", _get_room_summary_txn) + def _get_user_count_in_room_txn(self, txn, room_id, membership): + """ + See get_user_count_in_room. + """ + sql = ( + "SELECT count(*) FROM room_memberships as m" + " INNER JOIN current_state_events as c" + " ON m.event_id = c.event_id " + " AND m.room_id = c.room_id " + " AND m.user_id = c.state_key" + " WHERE c.type = 'm.room.member' AND c.room_id = ? AND m.membership = ?" + ) + + txn.execute(sql, (room_id, membership)) + row = txn.fetchone() + return row[0] + + def get_user_count_in_room(self, room_id, membership): + """ + Get the user count in a room with a particular membership. + + Args: + room_id (str) + membership (Membership) + + Returns: + Deferred[int] + """ + return self.runInteraction( + "get_users_in_room", self._get_user_count_in_room_txn, room_id, membership + ) + @cached() def get_invited_rooms_for_user(self, user_id): """ Get all the rooms the user is invited to