Module: DelayedCrud::Worker::SidekiqWorker

Defined in:
lib/delayed_crud/worker/sidekiq_worker.rb

Overview

:nodoc:

Class Method Summary collapse

Class Method Details

.perform_with_delay(operation:, record:, attributes: {}, options: {}) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/delayed_crud/worker/sidekiq_worker.rb', line 9

def self.perform_with_delay(operation:, record:, attributes: {}, options: {})
  raise ArgumentError, "Missing operation for a delayed transaction" if operation.nil?

  delay = DelayedCrud.calculate_delay(options[:in] || options[:after])

  record_id = record.try(:id)
  serialized_attributes = attributes.transform_keys(&:to_s)
  class_name = record_id ? record.class.name : record.name

  Sidekiq::Client.enqueue_in(delay.seconds, DelayedCrud::Job::SidekiqJob::DelayedCrudJob, class_name, record_id,
                             operation.to_s, serialized_attributes)
end