lib/acidic_job/extensions/sidekiq.rb in acidic_job-1.0.0.pre9 vs lib/acidic_job/extensions/sidekiq.rb in acidic_job-1.0.0.pre10

- old
+ new

@@ -56,15 +56,24 @@ concerning :PerformAcidicly do class_methods do def perform_acidicly(*args, **kwargs) serialized_job = serialize_with_arguments(*args, **kwargs) + # use either [1] provided key, [2] provided uniqueness constraint, or [3] computed key + key = if kwargs.key?(:idempotency_key) || kwargs.key?("idempotency_key") + kwargs[:idempotency_key] || kwargs["idempotency_key"] + elsif kwargs.key?(:unique_by) || kwargs.key?("unique_by") + unique_by = [kwargs[:unique_by], kwargs["unique_by"]].compact.first + IdempotencyKey.generate(unique_by: unique_by, job_class: name) + else + IdempotencyKey.new(acidic_identifier).value_for(serialized_job) + end AcidicJob::Run.create!( staged: true, job_class: name, serialized_job: serialized_job, - idempotency_key: IdempotencyKey.value_for(serialized_job) + idempotency_key: key ) end alias_method :perform_transactionally, :perform_acidicly end end