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