summary refs log tree commit diff
path: root/synapse/storage/stream.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/storage/stream.py')
-rw-r--r--synapse/storage/stream.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/synapse/storage/stream.py b/synapse/storage/stream.py

index b9ad965fd6..ada20706dc 100644 --- a/synapse/storage/stream.py +++ b/synapse/storage/stream.py
@@ -525,6 +525,26 @@ class StreamStore(SQLBaseStore): int(stream), ) + def get_last_event_id_ts_for_room(self, room_id, token): + stream_ordering = RoomStreamToken.parse_stream_token(token).stream + + sql = ( + "SELECT event_id, origin_server_ts FROM events" + " WHERE room_id = ? AND stream_ordering <= ?" + " ORDER BY topological_ordering DESC, stream_ordering DESC" + " LIMIT 1" + ) + + def f(txn): + txn.execute(sql, (room_id, stream_ordering)) + rows = self.cursor_to_dict(txn) + if rows: + return rows[0] + else: + return None + + return self.runInteraction("get_last_event_id_ts_for_room", f) + @defer.inlineCallbacks def get_events_around(self, room_id, event_id, before_limit, after_limit): """Retrieve events and pagination tokens around a given event in a