class Praxis::Mapper::Resources::QueryProxy

Attributes

klass[R]

Public Class Methods

new(klass:) click to toggle source
# File lib/praxis/mapper/resources/query_proxy.rb, line 9
def initialize(klass:)
  @klass = klass
end

Public Instance Methods

all(condition = {}) click to toggle source

Retrieve all or many wrapped resources .all -> returns them all .all(name: ‘foo’) -> returns all that match the name

# File lib/praxis/mapper/resources/query_proxy.rb, line 39
def all(condition = {})
  base = klass.model._add_includes(klass.model, @_includes) # includes(nil) seems to have no effect
  records = base._all(condition)

  klass.wrap(records)
end
first() click to toggle source
# File lib/praxis/mapper/resources/query_proxy.rb, line 46
def first
  record = klass.model._first
  record.nil? ? nil : klass.wrap(record)
end
get(condition) click to toggle source

Can pass extra includes through :_includes TODO: We should not use the AR includes, but first pass them through the properties, cause

we need to expand based on the resource methods, not the model methods
# File lib/praxis/mapper/resources/query_proxy.rb, line 21
def get(condition)
  base = klass.model._add_includes(klass.model, @_includes) # includes(nil) seems to have no effect
  record = base._get(condition)

  record.nil? ? nil : klass.for_record(record)
end
get!(condition) click to toggle source
# File lib/praxis/mapper/resources/query_proxy.rb, line 28
def get!(condition)
  resource = get(condition)
  # TODO: passing the :id if there is one in the condition...but can be more complex...think if we want to expose more
  raise Praxis::Mapper::ResourceNotFound.new(type: @klass, id: condition[:id]) unless resource

  resource
end
including(includes) click to toggle source
# File lib/praxis/mapper/resources/query_proxy.rb, line 13
def including(includes)
  @_includes = includes
  self
end
last() click to toggle source
# File lib/praxis/mapper/resources/query_proxy.rb, line 51
def last
  record = klass.model._last
  record.nil? ? nil : klass.wrap(record)
end