Module: JsonApiResource::Queryable::ClassMethods

Includes:
Conversions
Defined in:
lib/json_api_resource/queryable.rb

Instance Method Summary collapse

Methods included from Conversions

#Address, #ApiErrors, #ApiResource, #Boolean, #Date, #DateTime, #Symbolize

Instance Method Details

#all_without_pagination(opts = {}) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/json_api_resource/queryable.rb', line 38

def all_without_pagination(opts = {})
  page_total = 1
  current_page = 1
  all_results = []
  until (current_page > page_total) || (current_page > MAX_PAGES_FOR_ALL)
    page_of_results = where({:page => current_page}.merge(opts))
    all_results << page_of_results
    page_total = page_of_results.meta[:total_pages] || 1
    current_page = current_page + 1
  end
  JsonApiClient::ResultSet.new(all_results.flatten.compact)
end

#create(attr = {}) ⇒ Object



25
26
27
# File 'lib/json_api_resource/queryable.rb', line 25

def create(attr = {})
  new(:client => self.client_klass.create(attr)).save
end

#find(id) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/json_api_resource/queryable.rb', line 15

def find(id)
  return nil unless id.present?
  results = self.client_klass.find(id).map! do |result|
    self.new(:client => result)
  end
  results.size == 1 ? single_result(results) : results
rescue JsonApiClient::Errors::ServerError => e
  pretty_error e
end

#where(opts = {}) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/json_api_resource/queryable.rb', line 29

def where(opts = {})
  opts[:per_page] = opts.fetch(:per_page, self.per_page) if self.per_page
  (self.client_klass.where(opts).all).map! do |result|
    self.new(:client => result)
  end
rescue JsonApiClient::Errors::ServerError => e
  pretty_error e
end