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
|