Filter room ids before hitting the database
This commit is contained in:
parent
c8baada94a
commit
5c41224a89
|
@ -202,6 +202,26 @@ class Filter(object):
|
|||
|
||||
return True
|
||||
|
||||
def filter_rooms(self, room_ids):
|
||||
"""Apply the 'rooms' filter to a given list of rooms.
|
||||
|
||||
Args:
|
||||
room_ids (list): A list of room_ids.
|
||||
|
||||
Returns:
|
||||
list: A list of room_ids that match the filter
|
||||
"""
|
||||
room_ids = set(room_ids)
|
||||
|
||||
disallowed_rooms = set(self.filter_json.get("not_rooms", []))
|
||||
room_ids -= disallowed_rooms
|
||||
|
||||
allowed_rooms = self.filter_json.get("rooms", None)
|
||||
if allowed_rooms is not None:
|
||||
room_ids &= set(allowed_rooms)
|
||||
|
||||
return room_ids
|
||||
|
||||
def filter(self, events):
|
||||
return filter(self.check, events)
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ class SearchHandler(BaseHandler):
|
|||
)
|
||||
room_ids = set(r.room_id for r in rooms)
|
||||
|
||||
# TODO: Apply room filter to rooms list
|
||||
room_ids = filtr.filter_rooms(room_ids)
|
||||
|
||||
rank_map, event_map = yield self.store.search_msgs(room_ids, search_term, keys)
|
||||
|
||||
|
|
Loading…
Reference in New Issue