diff options
author | Erik Johnston <erik@matrix.org> | 2018-11-23 16:00:32 +0000 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2019-02-13 14:23:21 +0000 |
commit | 3223f415e2e088ea1f8eff3af4d3415dc9e5531a (patch) | |
tree | 571a66900647eb4190077f7411b811eb4bc9606a /synapse/storage/roommember.py | |
parent | Missing file (diff) | |
download | synapse-3223f415e2e088ea1f8eff3af4d3415dc9e5531a.tar.xz |
Add server health apis and server presence
Diffstat (limited to 'synapse/storage/roommember.py')
-rw-r--r-- | synapse/storage/roommember.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py index 0707f9a86a..d0db8528ee 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py @@ -88,6 +88,23 @@ class RoomMemberWorkerStore(EventsWorkerStore): return [to_ascii(r[0]) for r in txn] return self.runInteraction("get_users_in_room", f) + def get_all_hosts_and_room(self): + def f(txn): + sql = """ + SELECT DISTINCT room_id, regexp_replace(state_key, '^[^:]*:', '') AS host + FROM current_state_events + INNER JOIN room_memberships USING (event_id, room_id) + WHERE + type = 'm.room.member' AND membership = 'join' + """ + + txn.execute(sql) + results = {} + for r in txn: + results.setdefault(to_ascii(r[0]), set()).add(to_ascii(r[1])) + return results + return self.runInteraction("get_users_in_room", f) + @cached(max_entries=100000) def get_room_summary(self, room_id): """ Get the details of a room roughly suitable for use by the room |