class SidekiqRobustJob::Repository
Attributes
clock[R]
jobs_database[R]
Public Class Methods
new(jobs_database:, clock:)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 6 def initialize(jobs_database:, clock:) @jobs_database = jobs_database @clock = clock end
Public Instance Methods
build(attributes)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 27 def build(attributes) jobs_database.new(attributes) end
create(attributes)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 23 def create(attributes) jobs_database.create!(attributes) end
drop_unprocessed_jobs_by_digest(dropped_by_job_id:, digest:, exclude_id:)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 45 def drop_unprocessed_jobs_by_digest(dropped_by_job_id:, digest:, exclude_id:) transaction do unprocessed_for_digest(digest, exclude_id: exclude_id).lock!.find_each do |job| job.drop(dropped_by_job_id: dropped_by_job_id) save(job) end end end
find(id)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 15 def find(id) jobs_database.find(id) end
missed_jobs(missed_job_policy:)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 31 def missed_jobs(missed_job_policy:) jobs_database .where(completed_at: nil, dropped_at: nil, failed_at: nil) .select { |potentially_missed_job| missed_job_policy.call(potentially_missed_job) } end
save(record)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 19 def save(record) record.save! if record.changed? end
transaction() { || ... }
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 11 def transaction jobs_database.transaction { yield } end
unprocessed_for_digest(digest, exclude_id:)
click to toggle source
# File lib/sidekiq_robust_job/repository.rb, line 37 def unprocessed_for_digest(digest, exclude_id:) jobs_database .where(digest: digest) .where(completed_at: nil) .where(dropped_at: nil) .where.not(id: exclude_id) end