module Frodo::Query::InBatches
Constants
- DEFAULT_BATCH_SIZE
Public Instance Methods
in_batches(of: DEFAULT_BATCH_SIZE, &block)
click to toggle source
Process results in batches.
When a block is given, yields `Frodo::Query::Result` objects of specified batch size to the block.
service['Products'].query.in_batches(of: 10) do |batch| batch.count # batch size (10 except for last batch) batch.is_a? Frodo::Query::Result # true end
Returns an Enumerator to process results individually.
service['Products'].query.in_batches.each do |entity| entity.is_a? Frodo::Entity # true end
@param of: [int] batch size @return [Enumerator]
# File lib/frodo/query/in_batches.rb, line 24 def in_batches(of: DEFAULT_BATCH_SIZE, &block) per_page = of if block_given? each_batch(of, &block) else Enumerator.new do |result| each_batch(of) do |batch| batch.each { |entity| result << entity } end end end end
Private Instance Methods
each_batch(per_page) { |batch| ... }
click to toggle source
# File lib/frodo/query/in_batches.rb, line 40 def each_batch(per_page, &block) page = 0 loop do batch = get_paginated_entities(per_page, page) break if batch.empty? yield batch page += 1 end end
get_paginated_entities(per_page, page)
click to toggle source
# File lib/frodo/query/in_batches.rb, line 53 def get_paginated_entities(per_page, page) skip(per_page * page).limit(per_page).execute end