Use fully-qualified PersistedEventPosition when returning membership for user

Spawning from https://github.com/element-hq/synapse/pull/17187
This commit is contained in:
Eric Eastwood 2024-06-03 16:07:56 -05:00
parent 8a3270075b
commit 271a196121
3 changed files with 16 additions and 4 deletions

View file

@ -476,7 +476,7 @@ class RoomMemberWorkerStore(EventsWorkerStore, CacheInvalidationWorkerStore):
)
sql = """
SELECT room_id, e.sender, c.membership, event_id, e.stream_ordering, r.room_version
SELECT room_id, e.sender, c.membership, event_id, e.instance_name, e.stream_ordering, r.room_version
FROM local_current_membership AS c
INNER JOIN events AS e USING (room_id, event_id)
INNER JOIN rooms AS r USING (room_id)
@ -488,7 +488,17 @@ class RoomMemberWorkerStore(EventsWorkerStore, CacheInvalidationWorkerStore):
)
txn.execute(sql, (user_id, *args))
results = [RoomsForUser(*r) for r in txn]
results = [
RoomsForUser(
room_id,
sender,
membership,
event_id,
PersistedEventPosition(instance_name, stream_ordering),
room_version,
)
for room_id, sender, membership, event_id, instance_name, stream_ordering, room_version in txn
]
return results

View file

@ -35,7 +35,7 @@ class RoomsForUser:
sender: str
membership: str
event_id: str
stream_ordering: int
event_pos: PersistedEventPosition
room_version_id: str

View file

@ -154,7 +154,9 @@ class EventsWorkerStoreTestCase(BaseWorkerStoreTestCase):
USER_ID,
"invite",
event.event_id,
event.internal_metadata.stream_ordering,
PersistedEventPosition(
"master", event.internal_metadata.stream_ordering
),
RoomVersions.V1.identifier,
)
],