Class: Twterm::Repository::AbstractRepository
- Inherits:
-
Object
- Object
- Twterm::Repository::AbstractRepository
show all
- Defined in:
- lib/twterm/repository/abstract_repository.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of AbstractRepository.
4
5
6
7
8
9
10
11
|
# File 'lib/twterm/repository/abstract_repository.rb', line 4
def initialize
@repository = empty_repository
@callbacks = {
after_create: [],
before_create: [],
}
end
|
Instance Method Details
#after_create(&block) ⇒ Object
13
14
15
|
# File 'lib/twterm/repository/abstract_repository.rb', line 13
def after_create(&block)
@callbacks[:after_create] << block
end
|
#before_create(&block) ⇒ Object
17
18
19
|
# File 'lib/twterm/repository/abstract_repository.rb', line 17
def before_create(&block)
@callbacks[:before_create] << block
end
|
#create(*args) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/twterm/repository/abstract_repository.rb', line 21
def create(*args)
invoke_callbacks(:before_create, *args)
existing_instance = find((args))
instance = existing_instance.nil? ? type.new(*args) : existing_instance
store(instance) if existing_instance.nil?
invoke_callbacks(:after_create, instance)
instance
end
|
#find(_key) ⇒ Object
35
36
37
|
# File 'lib/twterm/repository/abstract_repository.rb', line 35
def find(_key)
raise NotImplementedError, '`find` must be implemented'
end
|
#type ⇒ Object
39
40
41
|
# File 'lib/twterm/repository/abstract_repository.rb', line 39
def type
raise NotImplementedError, '`type` must be implemented'
end
|