31 lines
		
	
	
		
			678 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			678 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class BackupWorker
 | 
						|
  include Sidekiq::Worker
 | 
						|
 | 
						|
  sidekiq_options queue: 'pull', backtrace: true, retry: 5, dead: false
 | 
						|
 | 
						|
  sidekiq_retries_exhausted do |msg|
 | 
						|
    backup_id = msg['args'].first
 | 
						|
 | 
						|
    ActiveRecord::Base.connection_pool.with_connection do
 | 
						|
      begin
 | 
						|
        backup = Backup.find(backup_id)
 | 
						|
        backup.destroy
 | 
						|
      rescue ActiveRecord::RecordNotFound
 | 
						|
        true
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def perform(backup_id)
 | 
						|
    backup = Backup.find(backup_id)
 | 
						|
    user   = backup.user
 | 
						|
 | 
						|
    BackupService.new.call(backup)
 | 
						|
 | 
						|
    user.backups.where.not(id: backup.id).destroy_all
 | 
						|
    UserMailer.backup_ready(user, backup).deliver_later
 | 
						|
  end
 | 
						|
end
 |