class BatchedQuery::Runner

Constants

DEFAULT_LIMIT

Public Class Methods

each_result(query, &block) click to toggle source
# File lib/batched_query/runner.rb, line 22
def self.each_result(query, &block)
  each_set(query) do |set|
    set.each do |result|
      block.call result
    end
  end
end
each_set(query, &block) click to toggle source
# File lib/batched_query/runner.rb, line 13
def self.each_set(query, &block)
  cached_ids = get_ordered_list_of_ids(query)

  cached_ids.each_slice(limit).each do |batch_of_ids|
    results = query.where(:id => batch_of_ids)
    block.call results
  end
end
limit() click to toggle source
# File lib/batched_query/runner.rb, line 9
def self.limit
  @limit || DEFAULT_LIMIT
end
limit=(limit) click to toggle source
# File lib/batched_query/runner.rb, line 5
def self.limit=(limit)
  @limit = limit
end

Private Class Methods

get_ordered_list_of_ids(query) click to toggle source
# File lib/batched_query/runner.rb, line 32
def self.get_ordered_list_of_ids(query)
  query.pluck(:id)
end