Class: EmptyDirectoryDeleteJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/empty_directory_delete_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(work_id:, source_bucket:, source_key:, wait_time: 10) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/jobs/empty_directory_delete_job.rb', line 6

def perform(work_id:, source_bucket:, source_key:, wait_time: 10)
  work = Work.find(work_id)
  service = S3QueryService.new(work, work.files_mode)

  if service.directory_empty(bucket: source_bucket, key: source_key)
    service.delete_s3_object(source_key, bucket: source_bucket)

    cleanup(work, service, source_bucket)
  else
    new_wait_time = wait_time * 10
    Rails.logger.warn("Directory is not empty #{source_bucket}#{source_key}.  Queuing the delete for #{new_wait_time} seconds from now")
    # queue the job for later, the files still have not moved
    EmptyDirectoryDeleteJob.set(wait: new_wait_time.seconds).perform_later(work_id:, source_bucket:, source_key:, wait_time: new_wait_time)
  end
end