@@ -125,7 +125,7 @@ def search_dataset(self, query="", limit=100):
125125 """
126126 return DBExtract (self ._mc .search (query , limit ))
127127
128- def update (self , reset = False , abort_event = None ):
128+ def update (self , reset = False , abort_event = None , callback = None ):
129129 """Update the local metadata cache based on the last local timestamp"""
130130 # Clear the fleeting cache.
131131 self ._cache_fleeting .clear ()
@@ -137,19 +137,29 @@ def update(self, reset=False, abort_event=None):
137137 self ._mc .reset ()
138138
139139 # Call these methods now so they reflect the current database state.
140- self .get_circles ()
141- self .get_collections ()
140+ circles = self .get_circles ()
141+ collections = self .get_collections ()
142142
143143 new_timestamp = time .time ()
144144
145- for cdict in self .get_circles ():
145+ datasets_new = 0
146+
147+ for cdict in circles :
148+ if callback is not None :
149+ callback ({
150+ "circles" : circles ,
151+ "collections" : collections ,
152+ "datasets_new" : datasets_new ,
153+ "circle_current" : cdict ,
154+ })
146155 logger .info (f"Fetching dataset from circle { cdict ['name' ]} " )
147156 dbe = self .ai .search_dataset_via_api (
148157 since_time = self .local_timestamp ,
149158 circles = [cdict ["name" ]],
150159 limit = 0 ,
151160 ret_db_extract = False ,
152161 )
162+ datasets_new += len (dbe )
153163 if abort_event and abort_event .is_set ():
154164 break
155165 self ._mc .upsert_many (dbe , org_id = cdict ["id" ])
0 commit comments