Class: Errol::Repository

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/errol/repository.rb

Constant Summary collapse

RecordAbsent =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(requirements = {}, paginate = true) ⇒ Repository

Returns a new instance of Repository.



72
73
74
75
76
# File 'lib/errol/repository.rb', line 72

def initialize(requirements={}, paginate=true)
  @requirements = requirements
  @inquiry = self.class.inquiry(requirements)
  @paginate = paginate
end

Instance Attribute Details

#inquiryObject (readonly)

Returns the value of attribute inquiry.



110
111
112
# File 'lib/errol/repository.rb', line 110

def inquiry
  @inquiry
end

Class Method Details

.[](id, requirements = {}) ⇒ Object



49
50
51
# File 'lib/errol/repository.rb', line 49

def [](id, requirements={})
  new(requirements, false)[id]
end

.all(requirements = {}) ⇒ Object



57
58
59
# File 'lib/errol/repository.rb', line 57

def all(requirements={})
  new(requirements, false).all
end

.build(entries = {}) {|entity| ... } ⇒ Object

Yields:

  • (entity)


6
7
8
9
10
11
12
13
# 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 = {}) ⇒ Object



37
38
39
# File 'lib/errol/repository.rb', line 37

def count(requirements={})
  new(requirements, false).count
end

.create(*arguments, &block) ⇒ Object



15
16
17
# File 'lib/errol/repository.rb', line 15

def create(*arguments, &block)
  build(*arguments, &block).tap(&method(:save))
end

.each(requirements = {}, &block) ⇒ Object



61
62
63
# File 'lib/errol/repository.rb', line 61

def each(requirements={}, &block)
  new(requirements, false).each &block
end

.empty?(requirements = {}) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/errol/repository.rb', line 33

def empty?(requirements={})
  new(requirements, false).empty?
end

.fetch(id, requirements = {}, &block) ⇒ Object



53
54
55
# File 'lib/errol/repository.rb', line 53

def fetch(id, requirements={}, &block)
  new(requirements, false).fetch(id, &block)
end

.first(requirements = {}) ⇒ Object



41
42
43
# File 'lib/errol/repository.rb', line 41

def first(requirements={})
  new(requirements, false).first
end

.last(requirements = {}) ⇒ Object



45
46
47
# File 'lib/errol/repository.rb', line 45

def last(requirements={})
  new(requirements, false).last
end

.raw_datasetObject



65
66
67
# File 'lib/errol/repository.rb', line 65

def raw_dataset
  record_class.dataset
end

.remove(entity) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/errol/repository.rb', line 24

def remove(entity)
  begin
    receive(entity).destroy
  rescue Sequel::NoExistingObject
    raise RecordAbsent
  end
  self
end

.save(entity) ⇒ Object



19
20
21
22
# File 'lib/errol/repository.rb', line 19

def save(entity)
  receive(entity).save
  self
end

Instance Method Details

#[](id) ⇒ Object



130
131
132
# File 'lib/errol/repository.rb', line 130

def [](id)
  dispatch(dataset.first(:id => id))
end

#allObject



141
142
143
# File 'lib/errol/repository.rb', line 141

def all
  paginated_dataset.map { |record| dispatch(record) }
end

#countObject



116
117
118
# File 'lib/errol/repository.rb', line 116

def count
  paginated_dataset.count
end

#current_pageObject



78
79
80
# File 'lib/errol/repository.rb', line 78

def current_page
  paginated_dataset.current_page
end

#eachObject



145
146
147
148
149
150
# File 'lib/errol/repository.rb', line 145

def each
  paginated_dataset.each do |record|
    yield dispatch(record)
  end
  self
end

#empty?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/errol/repository.rb', line 112

def empty?
  paginated_dataset.empty?
end

#fetch(id) ⇒ Object



134
135
136
137
138
139
# 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

#firstObject



120
121
122
# File 'lib/errol/repository.rb', line 120

def first
  dispatch(paginated_dataset.first)
end

#first_page?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/errol/repository.rb', line 86

def first_page?
  paginated_dataset.first_page?
end

#lastObject



124
125
126
127
128
# File 'lib/errol/repository.rb', line 124

def last
  # TODO say what!!
  all.last
  # dispatch(paginated_dataset.last)
end

#last_page?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/errol/repository.rb', line 90

def last_page?
  paginated_dataset.last_page?
end

#next_pageObject



102
103
104
# File 'lib/errol/repository.rb', line 102

def next_page
  paginated_dataset.next_page
end

#page_countObject



94
95
96
# File 'lib/errol/repository.rb', line 94

def page_count
  paginated_dataset.page_count
end

#page_rangeObject



98
99
100
# File 'lib/errol/repository.rb', line 98

def page_range
  paginated_dataset.page_range
end

#page_sizeObject



82
83
84
# File 'lib/errol/repository.rb', line 82

def page_size
  paginated_dataset.page_size
end

#paginate?Boolean

Returns:

  • (Boolean)


156
157
158
# File 'lib/errol/repository.rb', line 156

def paginate?
  @paginate
end

#previous_pageObject



106
107
108
# File 'lib/errol/repository.rb', line 106

def previous_page
  paginated_dataset.prev_page
end

#raw_datasetObject



152
153
154
# File 'lib/errol/repository.rb', line 152

def raw_dataset
  self.class.raw_dataset
end