class HotsApi::Repositories::Repository
Public Class Methods
new(where_values: {})
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 8 def initialize(where_values: {}) @where_values = where_values end
Public Instance Methods
each(&block)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 36 def each(&block) fetch { @records.each(&block) } end
find(id)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 12 def find(id) response = HotsApi.get("#{collection_path}/#{id}") if response.status.ok? instantiate_record_with(response.parse) end end
find_each(&block)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 40 def find_each(&block) find_each_enum.each(&block) end
last(n = nil)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 44 def last(n = nil) fetch { n ? @records.last(n) : @records.last } end
length()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 52 def length fetch { @records.length } end
next_page()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 32 def next_page fetch { where(min_id: @records.last.id + 1) if @records.any? } end
size()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 48 def size fetch { @records.size } end
where(conditions = {})
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 20 def where(conditions = {}) copy do conditions.each do |attribute, value| if respond_to?("#{attribute}=", true) send("#{attribute}=", value) else raise "Unknown attribute: #{attribute}" end end end end
Private Instance Methods
collection_path()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 100 def collection_path raise NotImplementedError end
copy(&block)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 58 def copy(&block) self.class.new(where_values: @where_values.clone, &block).tap do |repository| repository.instance_exec(&block) end end
fetch() { || ... }
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 68 def fetch unless @fetched response = HotsApi.get(collection_path, params: @where_values) @records = instantiate_records(response.parse) @fetched = true end yield end
fetched?()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 64 def fetched? @fetched end
find_each_enum()
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 79 def find_each_enum Enumerator.new do |yielder| page = self while page && page.any? page.each { |model| yielder << model } page = page.next_page end end end
instantiate_record_with(attributes)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 96 def instantiate_record_with(attributes) raise NotImplementedError end
instantiate_records(json)
click to toggle source
# File lib/hots_api/repositories/repository.rb, line 90 def instantiate_records(json) json.map do |attributes| instantiate_record_with(attributes) end end