class Errol::Repository

Constants

RecordAbsent

Attributes

inquiry[R]

Public Class Methods

[](id, requirements={}) click to toggle source
# File lib/errol/repository.rb, line 49
def [](id, requirements={})
  new(requirements, false)[id]
end
all(requirements={}) click to toggle source
# File lib/errol/repository.rb, line 57
def all(requirements={})
  new(requirements, false).all
end
build(entries={}) { |entity| ... } click to toggle source
# File lib/errol/repository.rb, line 6
def build(entries={})
  entity = dispatch(record_class.new)
  entries.each do |attribute, value|
    entity.public_send "#{attribute}=", value
  end
  yield entity if block_given?
  entity
end
count(requirements={}) click to toggle source
# File lib/errol/repository.rb, line 37
def count(requirements={})
  new(requirements, false).count
end
create(*arguments, &block) click to toggle source
# File lib/errol/repository.rb, line 15
def create(*arguments, &block)
  build(*arguments, &block).tap(&method(:save))
end
each(requirements={}, &block) click to toggle source
# File lib/errol/repository.rb, line 61
def each(requirements={}, &block)
  new(requirements, false).each &block
end
empty?(requirements={}) click to toggle source
# File lib/errol/repository.rb, line 33
def empty?(requirements={})
  new(requirements, false).empty?
end
fetch(id, requirements={}, &block) click to toggle source
# File lib/errol/repository.rb, line 53
def fetch(id, requirements={}, &block)
  new(requirements, false).fetch(id, &block)
end
first(requirements={}) click to toggle source
# File lib/errol/repository.rb, line 41
def first(requirements={})
  new(requirements, false).first
end
last(requirements={}) click to toggle source
# File lib/errol/repository.rb, line 45
def last(requirements={})
  new(requirements, false).last
end
new(requirements={}, paginate=true) click to toggle source
# File lib/errol/repository.rb, line 72
def initialize(requirements={}, paginate=true)
  @requirements = requirements
  @inquiry = self.class.inquiry(requirements)
  @paginate = paginate
end
raw_dataset() click to toggle source
# File lib/errol/repository.rb, line 65
def raw_dataset
  record_class.dataset
end
remove(entity) click to toggle source
# File lib/errol/repository.rb, line 24
def remove(entity)
  begin
    receive(entity).destroy
  rescue Sequel::NoExistingObject
    raise RecordAbsent
  end
  self
end
save(entity) click to toggle source
# File lib/errol/repository.rb, line 19
def save(entity)
  receive(entity).save
  self
end

Public Instance Methods

[](id) click to toggle source
# File lib/errol/repository.rb, line 130
def [](id)
  dispatch(dataset.first(:id => id))
end
all() click to toggle source
# File lib/errol/repository.rb, line 141
def all
  paginated_dataset.map { |record| dispatch(record) }
end
count() click to toggle source
# File lib/errol/repository.rb, line 116
def count
  paginated_dataset.count
end
current_page() click to toggle source
# File lib/errol/repository.rb, line 78
def current_page
  paginated_dataset.current_page
end
each() { |dispatch(record)| ... } click to toggle source
# File lib/errol/repository.rb, line 145
def each
  paginated_dataset.each do |record|
    yield dispatch(record)
  end
  self
end
empty?() click to toggle source
# File lib/errol/repository.rb, line 112
def empty?
  paginated_dataset.empty?
end
fetch(id) { |id| ... } click to toggle source
# File lib/errol/repository.rb, line 134
def fetch(id)
  item = self[id]
  return item if item
  return yield id if block_given?
  record_absent(id)
end
first() click to toggle source
# File lib/errol/repository.rb, line 120
def first
  dispatch(paginated_dataset.first)
end
first_page?() click to toggle source
# File lib/errol/repository.rb, line 86
def first_page?
  paginated_dataset.first_page?
end
last() click to toggle source
# File lib/errol/repository.rb, line 124
def last
  # TODO say what!!
  all.last
  # dispatch(paginated_dataset.last)
end
last_page?() click to toggle source
# File lib/errol/repository.rb, line 90
def last_page?
  paginated_dataset.last_page?
end
next_page() click to toggle source
# File lib/errol/repository.rb, line 102
def next_page
  paginated_dataset.next_page
end
page_count() click to toggle source
# File lib/errol/repository.rb, line 94
def page_count
  paginated_dataset.page_count
end
page_range() click to toggle source
# File lib/errol/repository.rb, line 98
def page_range
  paginated_dataset.page_range
end
page_size() click to toggle source
# File lib/errol/repository.rb, line 82
def page_size
  paginated_dataset.page_size
end
paginate?() click to toggle source
# File lib/errol/repository.rb, line 156
def paginate?
  @paginate
end
previous_page() click to toggle source
# File lib/errol/repository.rb, line 106
def previous_page
  paginated_dataset.prev_page
end
raw_dataset() click to toggle source
# File lib/errol/repository.rb, line 152
def raw_dataset
  self.class.raw_dataset
end

Private Instance Methods

dispatch(item) click to toggle source
# File lib/errol/repository.rb, line 162
def dispatch(item)
  self.class.dispatch(item) if item
end
paginated_dataset() click to toggle source
# File lib/errol/repository.rb, line 170
def paginated_dataset
  if paginate?
    dataset.paginate(inquiry.page.to_i, inquiry.page_size.to_i)
  else
    dataset
  end
end
record_absent(id) click to toggle source
# File lib/errol/repository.rb, line 166
def record_absent(id)
  raise RecordAbsent, "#{self.class.name} contains no record with id: #{id}"
end