summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
Diffstat (limited to 'synapse')
-rw-r--r--synapse/rest/admin/__init__.py2
-rw-r--r--synapse/storage/data_stores/main/stream.py69
2 files changed, 13 insertions, 58 deletions
diff --git a/synapse/rest/admin/__init__.py b/synapse/rest/admin/__init__.py
index a10b4a9b72..2932fe2123 100644
--- a/synapse/rest/admin/__init__.py
+++ b/synapse/rest/admin/__init__.py
@@ -107,7 +107,7 @@ class PurgeHistoryRestServlet(RestServlet):
 
             stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts)
 
-            r = await self.store.get_room_event_after_stream_ordering(
+            r = await self.store.get_room_event_before_stream_ordering(
                 room_id, stream_ordering
             )
             if not r:
diff --git a/synapse/storage/data_stores/main/stream.py b/synapse/storage/data_stores/main/stream.py
index 652cecd59b..a20c3d1012 100644
--- a/synapse/storage/data_stores/main/stream.py
+++ b/synapse/storage/data_stores/main/stream.py
@@ -525,25 +525,6 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
 
         return rows, token
 
-    def get_room_event_after_stream_ordering(self, room_id, stream_ordering):
-        """Gets details of the first event in a room at or after a stream ordering
-
-        Args:
-            room_id (str):
-            stream_ordering (int):
-
-        Returns:
-            Deferred[(int, int, str)]:
-                (stream ordering, topological ordering, event_id)
-        """
-        return self.db.runInteraction(
-            "get_room_event_after_stream_ordering",
-            self.get_room_event_around_stream_ordering_txn,
-            room_id,
-            stream_ordering,
-            "f",
-        )
-
     def get_room_event_before_stream_ordering(self, room_id, stream_ordering):
         """Gets details of the first event in a room at or before a stream ordering
 
@@ -555,45 +536,19 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
             Deferred[(int, int, str)]:
                 (stream ordering, topological ordering, event_id)
         """
-        return self.db.runInteraction(
-            "get_room_event_before_stream_ordering",
-            self.get_room_event_around_stream_ordering_txn,
-            room_id,
-            stream_ordering,
-            "b",
-        )
-
-    def get_room_event_around_stream_ordering_txn(
-        self, txn, room_id, stream_ordering, dir="f"
-    ):
-        """Gets details of the first event in a room at or either after or before a
-        stream ordering, depending on the provided direction.
-
-        Args:
-            room_id (str):
-            stream_ordering (int):
-            dir (str): Direction in which we're looking towards in the room's history,
-                either "f" (forward) or "b" (backward).
-
-        Returns:
-            Deferred[(int, int, str)]:
-                (stream ordering, topological ordering, event_id)
-        """
-        # Figure out which comparison operation to perform and how to order the results,
-        # using the provided direction.
-        op = "<=" if dir == "b" else ">="
-        order = "DESC" if dir == "b" else "ASC"
+        def _f(txn):
+            sql = (
+              "SELECT stream_ordering, topological_ordering, event_id"
+              " FROM events"
+              " WHERE room_id = ? AND stream_ordering <= ?"
+              " AND NOT outlier"
+              " ORDER BY stream_ordering DESC"
+              " LIMIT 1"
+            )
+            txn.execute(sql, (room_id, stream_ordering))
+            return txn.fetchone()
 
-        sql = (
-            "SELECT stream_ordering, topological_ordering, event_id"
-            " FROM events"
-            " WHERE room_id = ? AND stream_ordering %s ?"
-            " AND NOT outlier"
-            " ORDER BY stream_ordering %s"
-            " LIMIT 1"
-        ) % (op, order)
-        txn.execute(sql, (room_id, stream_ordering))
-        return txn.fetchone()
+        return self.db.runInteraction("get_room_event_before_stream_ordering", _f)
 
     @defer.inlineCallbacks
     def get_room_events_max_id(self, room_id=None):