|
|
|
@ -36,7 +36,7 @@ what sort order was used: |
|
|
|
|
from twisted.internet import defer |
|
|
|
|
|
|
|
|
|
from ._base import SQLBaseStore |
|
|
|
|
from synapse.util.caches.descriptors import cachedInlineCallbacks |
|
|
|
|
from synapse.util.caches.descriptors import cached |
|
|
|
|
from synapse.api.constants import EventTypes |
|
|
|
|
from synapse.types import RoomStreamToken |
|
|
|
|
from synapse.util.logcontext import preserve_fn |
|
|
|
@ -465,9 +465,25 @@ class StreamStore(SQLBaseStore): |
|
|
|
|
|
|
|
|
|
defer.returnValue((events, token)) |
|
|
|
|
|
|
|
|
|
@cachedInlineCallbacks(num_args=4) |
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def get_recent_events_for_room(self, room_id, limit, end_token, from_token=None): |
|
|
|
|
rows, token = yield self.get_recent_event_ids_for_room( |
|
|
|
|
room_id, limit, end_token, from_token |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
logger.debug("stream before") |
|
|
|
|
events = yield self._get_events( |
|
|
|
|
[r["event_id"] for r in rows], |
|
|
|
|
get_prev_content=True |
|
|
|
|
) |
|
|
|
|
logger.debug("stream after") |
|
|
|
|
|
|
|
|
|
self._set_before_and_after(events, rows) |
|
|
|
|
|
|
|
|
|
defer.returnValue((events, token)) |
|
|
|
|
|
|
|
|
|
@cached(num_args=4) |
|
|
|
|
def get_recent_event_ids_for_room(self, room_id, limit, end_token, from_token=None): |
|
|
|
|
end_token = RoomStreamToken.parse_stream_token(end_token) |
|
|
|
|
|
|
|
|
|
if from_token is None: |
|
|
|
@ -517,21 +533,10 @@ class StreamStore(SQLBaseStore): |
|
|
|
|
|
|
|
|
|
return rows, token |
|
|
|
|
|
|
|
|
|
rows, token = yield self.runInteraction( |
|
|
|
|
return self.runInteraction( |
|
|
|
|
"get_recent_events_for_room", get_recent_events_for_room_txn |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
logger.debug("stream before") |
|
|
|
|
events = yield self._get_events( |
|
|
|
|
[r["event_id"] for r in rows], |
|
|
|
|
get_prev_content=True |
|
|
|
|
) |
|
|
|
|
logger.debug("stream after") |
|
|
|
|
|
|
|
|
|
self._set_before_and_after(events, rows) |
|
|
|
|
|
|
|
|
|
defer.returnValue((events, token)) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def get_room_events_max_id(self, direction='f'): |
|
|
|
|
token = yield self._stream_id_gen.get_max_token() |
|
|
|
|