mirror of
				https://git.anonymousland.org/anonymousland/synapse.git
				synced 2025-10-31 10:38:55 -04:00 
			
		
		
		
	Refactor _set_push_actions_for_event_and_users_txn to use events_and_contexts
This commit is contained in:
		
							parent
							
								
									324c3e9399
								
							
						
					
					
						commit
						ad0ccf15ea
					
				
					 2 changed files with 42 additions and 34 deletions
				
			
		|  | @ -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,34 +107,39 @@ class EventPushActionsStore(SQLBaseStore): | |||
|             WHERE event_id = ? | ||||
|         """ | ||||
| 
 | ||||
|         txn.execute(sql, ( | ||||
|             event.room_id, event.internal_metadata.stream_ordering, | ||||
|             event.depth, event.event_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 | ||||
|             )) | ||||
| 
 | ||||
|         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 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", | ||||
|             ) | ||||
| 
 | ||||
|             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( | ||||
|             self, room_id, user_id, last_read_event_id | ||||
|  |  | |||
|  | @ -1162,16 +1162,17 @@ class EventsStore(SQLBaseStore): | |||
|             backfilled (bool): True if the events were backfilled | ||||
|         """ | ||||
| 
 | ||||
|         # Insert all the push actions into the event_push_actions table. | ||||
|         self._set_push_actions_for_event_and_users_txn( | ||||
|             txn, | ||||
|             events_and_contexts=events_and_contexts, | ||||
|         ) | ||||
| 
 | ||||
|         if not events_and_contexts: | ||||
|             # nothing to do here | ||||
|             return | ||||
| 
 | ||||
|         for event, context in events_and_contexts: | ||||
|             # Insert all the push actions into the event_push_actions table. | ||||
|             self._set_push_actions_for_event_and_users_txn( | ||||
|                 txn, event, | ||||
|             ) | ||||
| 
 | ||||
|             if event.type == EventTypes.Redaction and event.redacts is not None: | ||||
|                 # Remove the entries in the event_push_actions table for the | ||||
|                 # redacted event. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Erik Johnston
						Erik Johnston