@@ -521,18 +521,33 @@ def get_latest_successful_job_ids_for_name_all_params(self, report_name: str) ->
521521 def n_all_results_for_report_name (self , report_name : str ) -> int :
522522 return self ._get_result_count ({"report_name" : report_name })
523523
524- def delete_result (self , job_id : AnyStr ) -> Dict [str , Any ]:
524+ def delete_result (self , job_id : AnyStr , dry_run : bool = False ) -> Dict [str , Any ]:
525525 result = self ._get_raw_check_result (job_id )
526526 status = JobStatus .from_string (result ["status" ])
527527 gridfs_filenames = load_files_from_gridfs (self .result_data_store , result , do_read = False )
528528 if status in (JobStatus .ERROR , JobStatus .TIMEOUT , JobStatus .CANCELLED ):
529529 gridfs_filenames .append (_error_info_filename (job_id ))
530- self .update_check_status (job_id , JobStatus .DELETED )
530+ if not dry_run :
531+ self .update_check_status (job_id , JobStatus .DELETED )
532+ deleted_gridfs_files = []
531533 for filename in gridfs_filenames :
532- logger .info (f"Deleting { filename } " )
534+ logger .debug (f"Deleting { filename } " )
535+ existed = False
533536 for grid_out in self .result_data_store .find ({"filename" : filename }):
534- self .result_data_store .delete (grid_out ._id )
535- return {"deleted_result_document" : result , "gridfs_filenames" : gridfs_filenames }
537+ existed = True
538+ if not dry_run :
539+ self .result_data_store .delete (grid_out ._id )
540+ if existed :
541+ deleted_gridfs_files .append (filename )
542+ return {"deleted_result_document" : result , "gridfs_filenames" : deleted_gridfs_files }
543+
544+ def get_job_ids_older_than (self , cutoff : datetime .datetime , report_name : Optional [str ] = None ) -> List [str ]:
545+ query = {"job_start_time" : {"$lte" : cutoff }}
546+ query = _add_deleted_status_to_filter (query )
547+ if report_name :
548+ query ["report_name" ] = report_name
549+ to_delete = [d ["job_id" ] for d in self .library .find (query , {"_id" : 0 , "job_id" : 1 })]
550+ return to_delete
536551
537552
538553def _pdf_filename (job_id : str ) -> str :
0 commit comments