Allow paginating backwards from stream token

This commit is contained in:
Erik Johnston 2016-01-28 11:52:34 +00:00
parent ba8931829b
commit 4e7948b47a
3 changed files with 24 additions and 16 deletions

View file

@ -234,10 +234,10 @@ class StreamStore(SQLBaseStore):
get_prev_content=True
)
ret.reverse()
self._set_before_and_after(ret, rows, topo_order=False)
ret.reverse()
if rows:
key = "s%d" % min(r["stream_ordering"] for r in rows)
else:
@ -570,6 +570,18 @@ class StreamStore(SQLBaseStore):
row["topological_ordering"], row["stream_ordering"],)
)
def get_max_topological_token_for_stream_and_room(self, room_id, stream_key):
sql = (
"SELECT max(topological_ordering) FROM events"
" WHERE room_id = ? AND stream_ordering < ?"
)
return self._execute(
"get_max_topological_token_for_stream_and_room", None,
sql, room_id, stream_key,
).addCallback(
lambda r: r[0][0] if r else 0
)
def _get_max_topological_txn(self, txn):
txn.execute(
"SELECT MAX(topological_ordering) FROM events"