summary refs log tree commit diff
path: root/synapse/storage/event_actions.py
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2015-12-18 17:47:00 +0000
committerDavid Baker <dave@matrix.org>2015-12-18 17:47:00 +0000
commit413d0d6a2404c579b1fa39ece9a698f9df8349db (patch)
tree6664c149a4564e6b649ce2449c984c6a159ba631 /synapse/storage/event_actions.py
parentstill very WIP, but now sends unread_notifications_count in the room object o... (diff)
downloadsynapse-413d0d6a2404c579b1fa39ece9a698f9df8349db.tar.xz
Make unread notification count sending work: put the correct count in incremental syncs too, where necessary, and fix silly bugs like only select the event actions for that user...
Diffstat (limited to 'synapse/storage/event_actions.py')
-rw-r--r--synapse/storage/event_actions.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/synapse/storage/event_actions.py b/synapse/storage/event_actions.py
index 40ac8e2d27..f7fe78e554 100644
--- a/synapse/storage/event_actions.py
+++ b/synapse/storage/event_actions.py
@@ -42,12 +42,9 @@ class EventActionsStore(SQLBaseStore):
         defer.returnValue(ret)
 
     @defer.inlineCallbacks
-    def get_unread_event_actions_by_room(self, room_id, last_read_event_id):
-        #events = yield self._get_events(
-        #    [last_read_event_id],
-        #    check_redacted=False
-        #)
-
+    def get_unread_event_actions_by_room_for_user(
+            self, room_id, user_id, last_read_event_id
+    ):
         def _get_unread_event_actions_by_room(txn):
             sql = (
                 "SELECT stream_ordering, topological_ordering"
@@ -65,10 +62,11 @@ class EventActionsStore(SQLBaseStore):
             topological_ordering = results[0][1]
 
             sql = (
-                "SELECT ea.actions"
+                "SELECT ea.event_id, ea.actions"
                 " FROM event_actions ea, events e"
                 " WHERE ea.room_id = e.room_id"
                 " AND ea.event_id = e.event_id"
+                " AND ea.user_id = ?"
                 " AND ea.room_id = ?"
                 " AND ("
                 "       e.topological_ordering > ?"
@@ -76,9 +74,14 @@ class EventActionsStore(SQLBaseStore):
                 ")"
             )
             txn.execute(sql,
-                (room_id, topological_ordering, topological_ordering, stream_ordering)
+                (
+                    user_id, room_id,
+                    topological_ordering, topological_ordering, stream_ordering
+                )
             )
-            return txn.fetchall()
+            return [
+                { "event_id": row[0], "actions": row[1] } for row in txn.fetchall()
+            ]
 
         ret = yield self.runInteraction(
             "get_unread_event_actions_by_room",