module Loco::Persistable::ClassMethods

Public Instance Methods

adapter(adapter_class, *args) click to toggle source
# File lib/motion-loco/persistable.rb, line 43
def adapter(adapter_class, *args)
  if adapter_class.is_a? String
    @adapter = adapter_class.constantize.new(*args)
  else
    @adapter = adapter_class.new(*args)
  end
end
all(id=nil, &block)
Alias for: find
find(id=nil, &block) click to toggle source
# File lib/motion-loco/persistable.rb, line 51
def find(id=nil, &block)
  adapter = self.get_class_adapter
  if id.nil?
    # Return all records
    records = RecordArray.new(item_class: self.class)
    adapter.find_all(self, records) do |records|
      block.call(records) if block.is_a? Proc
    end
  elsif id.is_a? Array
    # Return records with given ids
    records = RecordArray.new(item_class: self.class)
    id.each do |i|
      records << self.new(id: i)
    end
    adapter.find_many(self, records, id) do |records|
      block.call(records) if block.is_a? Proc
    end
  elsif id.is_a? Hash
    # Return records matching query
    records = RecordArray.new(item_class: self.class)
    adapter.find_query(self, records, id) do |records|
      block.call(records) if block.is_a? Proc
    end
  else
    record = self.new(id: id)
    adapter.find(record, id) do |record|
      block.call(record) if block.is_a? Proc
    end
  end
end
Also aliased as: all, where
get_class_adapter() click to toggle source
# File lib/motion-loco/persistable.rb, line 84
def get_class_adapter
  @adapter ||= Adapter.new
end
where(id=nil, &block)
Alias for: find