Class: ApprovedFileMoveJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- ApprovedFileMoveJob
- Defined in:
- app/jobs/approved_file_move_job.rb
Instance Method Summary collapse
- #key ⇒ Object
- #perform(work_id:, source_bucket:, source_key:, target_bucket:, target_key:, size:, snapshot_id:) ⇒ Object
- #service ⇒ Object
- #snapshot ⇒ Object
- #work ⇒ Object
- #work_path ⇒ Object
- #work_preservation ⇒ Object
Instance Method Details
#key ⇒ Object
31 32 33 |
# File 'app/jobs/approved_file_move_job.rb', line 31 def key @key ||= "/#{@source_bucket}/#{@source_key}" end |
#perform(work_id:, source_bucket:, source_key:, target_bucket:, target_key:, size:, snapshot_id:) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/jobs/approved_file_move_job.rb', line 6 def perform(work_id:, source_bucket:, source_key:, target_bucket:, target_key:, size:, snapshot_id:) @work_id = work_id @snapshot_id = snapshot_id @source_bucket = source_bucket @source_key = source_key move_service = S3MoveService.new(work_id:, source_bucket:, source_key:, target_bucket:, target_key:, size:) etag = move_service.move # if there is an error and exception is raised snapshot.with_lock do snapshot.reload snapshot.mark_complete(target_key, etag) end # Once the last file has been deleted... if service.client_s3_files(reload: true, bucket_name: source_bucket).count == 0 # delete the source directory... service.delete_s3_object(work.s3_object_key, bucket: source_bucket) # ...and create the preservation files work_preservation.preserve! end end |
#service ⇒ Object
39 40 41 |
# File 'app/jobs/approved_file_move_job.rb', line 39 def service @service ||= S3QueryService.new(work, work.files_mode) end |
#snapshot ⇒ Object
43 44 45 |
# File 'app/jobs/approved_file_move_job.rb', line 43 def snapshot @snapshot ||= ApprovedUploadSnapshot.find(@snapshot_id) end |
#work ⇒ Object
35 36 37 |
# File 'app/jobs/approved_file_move_job.rb', line 35 def work @work ||= Work.find(@work_id) end |
#work_path ⇒ Object
47 48 49 |
# File 'app/jobs/approved_file_move_job.rb', line 47 def work_path @work_path ||= "#{work.doi}/#{work.id}" end |
#work_preservation ⇒ Object
51 52 53 |
# File 'app/jobs/approved_file_move_job.rb', line 51 def work_preservation @work_preservation ||= WorkPreservationService.new(work_id: @work_id, path: work_path) end |