mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-13 06:12:17 -04:00
Add a configuration to exclude rooms from sync response (#12310)
This commit is contained in:
parent
e0bb268134
commit
437a8ed9ef
7 changed files with 138 additions and 21 deletions
|
@ -36,7 +36,7 @@ what sort order was used:
|
|||
"""
|
||||
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Collection, Dict, List, Optional, Set, Tuple
|
||||
from typing import TYPE_CHECKING, Any, Collection, Dict, List, Optional, Set, Tuple
|
||||
|
||||
import attr
|
||||
from frozendict import frozendict
|
||||
|
@ -585,7 +585,11 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||
return ret, key
|
||||
|
||||
async def get_membership_changes_for_user(
|
||||
self, user_id: str, from_key: RoomStreamToken, to_key: RoomStreamToken
|
||||
self,
|
||||
user_id: str,
|
||||
from_key: RoomStreamToken,
|
||||
to_key: RoomStreamToken,
|
||||
excluded_rooms: Optional[List[str]] = None,
|
||||
) -> List[EventBase]:
|
||||
"""Fetch membership events for a given user.
|
||||
|
||||
|
@ -610,23 +614,29 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||
min_from_id = from_key.stream
|
||||
max_to_id = to_key.get_max_stream_pos()
|
||||
|
||||
args: List[Any] = [user_id, min_from_id, max_to_id]
|
||||
|
||||
ignore_room_clause = ""
|
||||
if excluded_rooms is not None and len(excluded_rooms) > 0:
|
||||
ignore_room_clause = "AND e.room_id NOT IN (%s)" % ",".join(
|
||||
"?" for _ in excluded_rooms
|
||||
)
|
||||
args = args + excluded_rooms
|
||||
|
||||
sql = """
|
||||
SELECT m.event_id, instance_name, topological_ordering, stream_ordering
|
||||
FROM events AS e, room_memberships AS m
|
||||
WHERE e.event_id = m.event_id
|
||||
AND m.user_id = ?
|
||||
AND e.stream_ordering > ? AND e.stream_ordering <= ?
|
||||
%s
|
||||
ORDER BY e.stream_ordering ASC
|
||||
"""
|
||||
txn.execute(
|
||||
sql,
|
||||
(
|
||||
user_id,
|
||||
min_from_id,
|
||||
max_to_id,
|
||||
),
|
||||
""" % (
|
||||
ignore_room_clause,
|
||||
)
|
||||
|
||||
txn.execute(sql, args)
|
||||
|
||||
rows = [
|
||||
_EventDictReturn(event_id, None, stream_ordering)
|
||||
for event_id, instance_name, topological_ordering, stream_ordering in txn
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue