|
|
|
@ -88,11 +88,13 @@ class EventPushActionsStore(SQLBaseStore): |
|
|
|
|
self._rotate_notifs, 30 * 60 * 1000 |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def _set_push_actions_for_event_and_users_txn(self, txn, event): |
|
|
|
|
""" |
|
|
|
|
def _set_push_actions_for_event_and_users_txn(self, txn, events_and_contexts): |
|
|
|
|
"""Handles moving push actions from staging table to main |
|
|
|
|
event_push_actions table for all events in `events_and_contexts`. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
|
event: the event set actions for |
|
|
|
|
tuples: list of tuples of (user_id, actions) |
|
|
|
|
events_and_contexts (list[(EventBase, EventContext)]): events |
|
|
|
|
we are persisting |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
sql = """ |
|
|
|
@ -105,33 +107,38 @@ class EventPushActionsStore(SQLBaseStore): |
|
|
|
|
WHERE event_id = ? |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
txn.execute(sql, ( |
|
|
|
|
event.room_id, event.internal_metadata.stream_ordering, |
|
|
|
|
event.depth, event.event_id, |
|
|
|
|
)) |
|
|
|
|
|
|
|
|
|
user_ids = self._simple_select_onecol_txn( |
|
|
|
|
txn, |
|
|
|
|
table="event_push_actions_staging", |
|
|
|
|
keyvalues={ |
|
|
|
|
"event_id": event.event_id, |
|
|
|
|
}, |
|
|
|
|
retcol="user_id", |
|
|
|
|
) |
|
|
|
|
if events_and_contexts: |
|
|
|
|
txn.executemany(sql, ( |
|
|
|
|
( |
|
|
|
|
event.room_id, event.internal_metadata.stream_ordering, |
|
|
|
|
event.depth, event.event_id, |
|
|
|
|
) |
|
|
|
|
for event, _ in events_and_contexts |
|
|
|
|
)) |
|
|
|
|
|
|
|
|
|
for event, _ in events_and_contexts: |
|
|
|
|
user_ids = self._simple_select_onecol_txn( |
|
|
|
|
txn, |
|
|
|
|
table="event_push_actions_staging", |
|
|
|
|
keyvalues={ |
|
|
|
|
"event_id": event.event_id, |
|
|
|
|
}, |
|
|
|
|
retcol="user_id", |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
self._simple_delete_txn( |
|
|
|
|
txn, |
|
|
|
|
table="event_push_actions_staging", |
|
|
|
|
keyvalues={ |
|
|
|
|
"event_id": event.event_id, |
|
|
|
|
}, |
|
|
|
|
) |
|
|
|
|
for uid in user_ids: |
|
|
|
|
txn.call_after( |
|
|
|
|
self.get_unread_event_push_actions_by_room_for_user.invalidate_many, |
|
|
|
|
(event.room_id, uid,) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
for uid in user_ids: |
|
|
|
|
txn.call_after( |
|
|
|
|
self.get_unread_event_push_actions_by_room_for_user.invalidate_many, |
|
|
|
|
(event.room_id, uid,) |
|
|
|
|
txn.executemany( |
|
|
|
|
"DELETE FROM event_push_actions_staging WHERE event_id = ?", |
|
|
|
|
( |
|
|
|
|
(event.event_id,) |
|
|
|
|
for event, _ in events_and_contexts |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@cachedInlineCallbacks(num_args=3, tree=True, max_entries=5000) |
|
|
|
|
def get_unread_event_push_actions_by_room_for_user( |
|
|
|
|