Module: InsalesApi::Resource::WithUpdatedSince

Included in:
Category, Client, Collection, Order, Product
Defined in:
lib/insales_api/resource/with_updated_since.rb

Instance Method Summary collapse

Instance Method Details

#find_in_batches(options = {}, &block) ⇒ Object



4
5
6
7
8
# File 'lib/insales_api/resource/with_updated_since.rb', line 4

def find_in_batches(options = {}, &block)
  return super unless (updated_since = options.delete(:updated_since))

  find_updated_since(updated_since, options, &block)
end

#find_updated_since(updated_since, options = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/insales_api/resource/with_updated_since.rb', line 10

def find_updated_since(updated_since, options = {})
  per_page = options[:per_page] || PER_PAGE_DEFAULT
  params    = { per_page: per_page }.merge(options[:params] || {})
  last_id   = options[:last_id] || nil
  loop do
    items = all(params: params.merge(
      updated_since: updated_since,
      from_id: last_id,
    ))

    raise(ActiveResource::ResourceNotFound.new(nil)) if items.nil?

    return unless items.any?

    yield items
    return if items.count < per_page

    last_item     = items.last
    last_id       = last_item.id
    updated_since = last_item.updated_at
  end
end