Sha256: 8e82425185664e2aed1c99505f3dfcdebd734c54f450bc70be8537ddea029af4

Contents?: true

Size: 923 Bytes

Versions: 2

Compression:

Stored size: 923 Bytes

Contents

# frozen_string_literal: true

# JobFinder runs SQL query which is almost same as delayed_job_active_record.
# See https://github.com/collectiveidea/delayed_job_active_record/blob/master/lib/delayed/backend/active_record.rb
module Delayed
  module Master
    class JobFinder
      def initialize(model)
        @model = model
      end

      def call(setting, limit)
        scope(setting).limit(limit).pluck(:id)
      end

      def count(setting)
        scope(setting).count
      end

      private

      def scope(setting)
        @model.ready_to_run(nil, setting.max_run_time || Delayed::Worker::DEFAULT_MAX_RUN_TIME).tap do |jobs|
          jobs.where!("priority >= ?", setting.min_priority) if setting.min_priority
          jobs.where!("priority <= ?", setting.max_priority) if setting.max_priority
          jobs.where!(queue: setting.queues) if setting.queues.present?
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
delayed_job_master-3.0.1 lib/delayed/master/job_finder.rb
delayed_job_master-3.0.0 lib/delayed/master/job_finder.rb