class Koine::Repository::Repository

Attributes

entity_prototype[RW]
hydrator[RW]
storage[R]

Public Class Methods

new(storage) click to toggle source
# File lib/koine/repository/repository.rb, line 9
def initialize(storage)
  @storage = storage
end

Public Instance Methods

find_all_by(criterias) click to toggle source
# File lib/koine/repository/repository.rb, line 21
def find_all_by(criterias)
  hydrate_collection(storage.find_all_by(criterias))
end
find_one_by(criterias) click to toggle source
# File lib/koine/repository/repository.rb, line 25
def find_one_by(criterias)
  raw_data = storage.find_one_by(criterias)
  hydrate(raw_data, new_entity) if raw_data
end
find_one_by!(criterias) click to toggle source
# File lib/koine/repository/repository.rb, line 30
def find_one_by!(criterias)
  find_one_by(criterias) or raise RecordNotFound
end
remove(*) click to toggle source
# File lib/koine/repository/repository.rb, line 17
def remove(*)
  raise "Method not implemented"
end
save(*) click to toggle source
# File lib/koine/repository/repository.rb, line 13
def save(*)
  raise "Method not implemented"
end

Private Instance Methods

hydrate(data, entity) click to toggle source
# File lib/koine/repository/repository.rb, line 52
def hydrate(data, entity)
  hydrator.hydrate(data, entity)
  entity
end
hydrate_collection(collection) click to toggle source
# File lib/koine/repository/repository.rb, line 44
def hydrate_collection(collection)
  [].tap do |hydrated|
    collection.each do |element|
      hydrated << hydrate(element, new_entity)
    end
  end
end
new_entity() click to toggle source
# File lib/koine/repository/repository.rb, line 57
def new_entity
  entity_prototype.dup
end