Class: Kanji::Repository

Inherits:
ROM::Repository::Root
  • Object
show all
Defined in:
lib/kanji/repository.rb

Instance Method Summary collapse

Instance Method Details

#allObject



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

def all
  relation.to_a
end

#create(params) ⇒ Object



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

def create(params)
  pk = relation.insert(params)
  relation.where(id: pk).one
end

#destroy(id) ⇒ Object



47
48
49
50
51
# File 'lib/kanji/repository.rb', line 47

def destroy(id)
  item = relation.where(id: id).one
  relation.where(id: id).delete
  item
end

#klassObject



6
7
8
# File 'lib/kanji/repository.rb', line 6

def klass
  @_klass ||= self.class
end

#relationObject



25
26
27
# File 'lib/kanji/repository.rb', line 25

def relation
  @_relation ||= relations[relation_name].map_to(type)
end

#relation_nameObject



10
11
12
13
14
15
# File 'lib/kanji/repository.rb', line 10

def relation_name
  @_relation_name ||= begin
    name = Dry::Core::Inflector.demodulize(klass.name)
    Dry::Core::Inflector.underscore(name)
  end
end

#typeObject



17
18
19
20
21
22
23
# File 'lib/kanji/repository.rb', line 17

def type
  @_type ||= begin
    name = Dry::Core::Inflector.demodulize(klass.name)
    singular_name = Dry::Core::Inflector.singularize(name)
    Dry::Core::Inflector.constantize("Types::#{singular_name}")
  end
end

#update(params) ⇒ Object



42
43
44
45
# File 'lib/kanji/repository.rb', line 42

def update(params)
  relation.where(id: params["id"]).update(params)
  relation.where(id: params["id"]).one
end

#value_objectObject



29
30
31
# File 'lib/kanji/repository.rb', line 29

def value_object
  @_value_object ||= type.resolve(:value_object)
end