class GlobalRegistryModels::Collection

Public Class Methods

new(meta:, list:) click to toggle source
# File lib/global_registry_models/collection.rb, line 10
def initialize(meta:, list:)
  @meta = meta
  @list = list
end

Public Instance Methods

all() click to toggle source
# File lib/global_registry_models/collection.rb, line 32
def all
  @list
end
each() { |object| ... } click to toggle source
# File lib/global_registry_models/collection.rb, line 15
def each
  @list.each { |object| yield object }
end
first() click to toggle source
# File lib/global_registry_models/collection.rb, line 24
def first
  @list.first
end
first_page?() click to toggle source
# File lib/global_registry_models/collection.rb, line 44
def first_page?
  page == 1
end
from() click to toggle source
# File lib/global_registry_models/collection.rb, line 56
def from
  @meta['from']
end
last() click to toggle source
# File lib/global_registry_models/collection.rb, line 28
def last
  @list.last
end
last_page?() click to toggle source
# File lib/global_registry_models/collection.rb, line 40
def last_page?
  !@meta['next_page']
end
next_page() click to toggle source
# File lib/global_registry_models/collection.rb, line 48
def next_page
  last_page? ? nil : page + 1
end
order(attribute) click to toggle source
# File lib/global_registry_models/collection.rb, line 19
def order(attribute)
  @list = @list.sort_by {|obj| obj.send attribute}
  return self
end
page() click to toggle source
# File lib/global_registry_models/collection.rb, line 36
def page
  @meta['page']
end
per() click to toggle source
# File lib/global_registry_models/collection.rb, line 64
def per
  (to - from) + 1
end
prev_page() click to toggle source
# File lib/global_registry_models/collection.rb, line 52
def prev_page
  first_page? ? nil : page - 1
end
to() click to toggle source
# File lib/global_registry_models/collection.rb, line 60
def to
  @meta['to']
end
to_csv() click to toggle source
# File lib/global_registry_models/collection.rb, line 68
def to_csv
  CSV.generate do |csv|
    attributes = @list.first.attributes.collect(&:first).sort
    csv << attributes
    @list.each do |entity|
      csv << attributes.collect { |attribute| entity.attributes[attribute] }
    end
  end
end