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