Class: Desiru::Persistence::Repositories::BaseRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/desiru/persistence/repositories/base_repository.rb

Overview

Base repository with common CRUD operations

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_class) ⇒ BaseRepository

Returns a new instance of BaseRepository.



10
11
12
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 10

def initialize(model_class)
  @model_class = model_class
end

Instance Attribute Details

#model_classObject (readonly)

Returns the value of attribute model_class.



8
9
10
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 8

def model_class
  @model_class
end

Instance Method Details

#allObject



14
15
16
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 14

def all
  dataset.all
end

#countObject



50
51
52
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 50

def count
  dataset.count
end

#create(attributes) ⇒ Object



30
31
32
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 30

def create(attributes)
  model_class.create(attributes)
end

#delete?(id) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 42

def delete?(id)
  record = find(id)
  return false unless record

  record.destroy
  true
end

#exists?(conditions) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 54

def exists?(conditions)
  dataset.where(conditions).any?
end

#find(id) ⇒ Object



18
19
20
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 18

def find(id)
  dataset.first(id: id)
end

#find_by(conditions) ⇒ Object



22
23
24
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 22

def find_by(conditions)
  dataset.where(conditions).first
end

#paginate(page: 1, per_page: 20) ⇒ Object



58
59
60
61
62
63
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 58

def paginate(page: 1, per_page: 20)
  dataset
    .limit(per_page)
    .offset((page - 1) * per_page)
    .all
end

#update(id, attributes) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 34

def update(id, attributes)
  record = find(id)
  return nil unless record

  record.update(attributes)
  record
end

#where(conditions) ⇒ Object



26
27
28
# File 'lib/desiru/persistence/repositories/base_repository.rb', line 26

def where(conditions)
  dataset.where(conditions).all
end