mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-06-04 17:28:49 -04:00
Don't recreate so many sets
This commit is contained in:
parent
2ccf3b241c
commit
6957bfdca6
10 changed files with 42 additions and 51 deletions
|
@ -274,24 +274,25 @@ class RoomMemberStore(SQLBaseStore):
|
|||
|
||||
return rows
|
||||
|
||||
@cached(max_entries=500000, iterable=True)
|
||||
@cachedInlineCallbacks(max_entries=500000, iterable=True)
|
||||
def get_rooms_for_user(self, user_id):
|
||||
return self.get_rooms_for_user_where_membership_is(
|
||||
rooms = yield self.get_rooms_for_user_where_membership_is(
|
||||
user_id, membership_list=[Membership.JOIN],
|
||||
)
|
||||
defer.returnValue(frozenset(r.room_id for r in rooms))
|
||||
|
||||
@cachedInlineCallbacks(max_entries=500000, cache_context=True, iterable=True)
|
||||
def get_users_who_share_room_with_user(self, user_id, cache_context):
|
||||
"""Returns the set of users who share a room with `user_id`
|
||||
"""
|
||||
rooms = yield self.get_rooms_for_user(
|
||||
room_ids = yield self.get_rooms_for_user(
|
||||
user_id, on_invalidate=cache_context.invalidate,
|
||||
)
|
||||
|
||||
user_who_share_room = set()
|
||||
for room in rooms:
|
||||
for room_id in room_ids:
|
||||
user_ids = yield self.get_users_in_room(
|
||||
room.room_id, on_invalidate=cache_context.invalidate,
|
||||
room_id, on_invalidate=cache_context.invalidate,
|
||||
)
|
||||
user_who_share_room.update(user_ids)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue