@@ -19,13 +19,25 @@ def celery_shutdown(**kwargs):
19
19
close_connections ()
20
20
21
21
@celery_app .task (acks_late = True )
22
- def trigger_remote (service_id , affected_connection_external_ids ):
22
+ def trigger_remote (service_id , affected_connection_external_ids_with_payloads ):
23
23
from tapiriik .auth import User
24
24
from tapiriik .services import Service
25
25
svc = Service .FromID (service_id )
26
- db .connections .update ({"Service" : svc .ID , "ExternalID" : {"$in" : affected_connection_external_ids }}, {"$set" :{"TriggerPartialSync" : True , "TriggerPartialSyncTimestamp" : datetime .utcnow ()}}, multi = True , w = MONGO_FULL_WRITE_CONCERN )
27
- affected_connection_ids = db .connections .find ({"Service" : svc .ID , "ExternalID" : {"$in" : affected_connection_external_ids }}, {"_id" : 1 })
28
- affected_connection_ids = [x ["_id" ] for x in affected_connection_ids ]
26
+ affected_connection_ids = list ()
27
+
28
+ for item in affected_connection_external_ids_with_payloads :
29
+ if isinstance (item , list ):
30
+ external_id , payload = item
31
+ else :
32
+ external_id = item
33
+ payload = None
34
+ update_connection_query = {"$set" :{"TriggerPartialSync" : True , "TriggerPartialSyncTimestamp" : datetime .utcnow ()}}
35
+ if payload is not None :
36
+ update_connection_query .update ({"$push" : {"TriggerPartialSyncPayloads" : payload , "$slice" : - 90 }})
37
+ record = db .connections .find_and_modify ({"Service" : svc .ID , "ExternalID" : external_id }, update_connection_query , w = MONGO_FULL_WRITE_CONCERN )
38
+ if record :
39
+ affected_connection_ids .append (record ["_id" ])
40
+
29
41
trigger_users_query = User .PaidUserMongoQuery ()
30
42
trigger_users_query .update ({"ConnectedServices.ID" : {"$in" : affected_connection_ids }})
31
43
trigger_users_query .update ({"Config.suppress_auto_sync" : {"$ne" : True }})
0 commit comments