class MasterLeague::Repository

Attributes

path[RW]
limit_value[RW]
order_value[RW]
page_value[RW]

Public Instance Methods

all() click to toggle source
# File lib/master_league/repository.rb, line 24
def all
  clone
end
each(&block) click to toggle source
# File lib/master_league/repository.rb, line 11
def each(&block)
  records.each(&block)
end
find(id) click to toggle source
# File lib/master_league/repository.rb, line 19
def find(id)
  response = MasterLeague.fetch("#{self.class.path}#{id}/")
  instantiate_record(response)
end
inspect() click to toggle source
# File lib/master_league/repository.rb, line 56
def inspect
  entries = records.first(11).map!(&:inspect)
  entries[10] = '...' if entries.size == 11

  "#<#{self.class.name} [#{entries.join(', ')}]>"
end
last() click to toggle source
# File lib/master_league/repository.rb, line 15
def last
  records.last
end
limit(limit) click to toggle source
# File lib/master_league/repository.rb, line 42
def limit(limit)
  clone.tap do |repository|
    unload
    repository.limit_value = limit
  end
end
order(order) click to toggle source
# File lib/master_league/repository.rb, line 28
def order(order)
  clone.tap do |repository|
    unload
    repository.order_value = order
  end
end
page(page) click to toggle source
# File lib/master_league/repository.rb, line 35
def page(page)
  clone.tap do |repository|
    unload
    repository.page_value = page
  end
end
where(filters) click to toggle source
# File lib/master_league/repository.rb, line 49
def where(filters)
  clone.tap do |repository|
    unload
    repository.where_values.merge!(filters)
  end
end

Private Instance Methods

fetch() click to toggle source
# File lib/master_league/repository.rb, line 87
def fetch
  response = MasterLeague.fetch(self.class.path, where_values.merge(params))
  instantiate_records(response)
end
instantiate_record(record_json) click to toggle source
# File lib/master_league/repository.rb, line 96
def instantiate_record(record_json)
  raise NotImplementedError
end
instantiate_records(records_json) click to toggle source
# File lib/master_league/repository.rb, line 92
def instantiate_records(records_json)
  raise NotImplementedError
end
load() click to toggle source
# File lib/master_league/repository.rb, line 69
def load
  unless loaded?
    @records = fetch
    @loaded = true
  end

  self
end
loaded?() click to toggle source
# File lib/master_league/repository.rb, line 83
def loaded?
  !!@loaded
end
params() click to toggle source
# File lib/master_league/repository.rb, line 100
def params
  {}.tap do |params|
    params[:ordering] = @order_value if @order_value
    params[:page] = @page_value if @page_value
    params[:page_size] = @limit_value if @limit_value
  end
end
records() click to toggle source
# File lib/master_league/repository.rb, line 108
def records
  load
  @records
end
unload() click to toggle source
# File lib/master_league/repository.rb, line 78
def unload
  @loaded = false
  @records = nil
end
where_values() click to toggle source
# File lib/master_league/repository.rb, line 65
def where_values
  @where_values ||= {}
end