Class: Commons::Repositories::BaseRepository

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/commons/repositories/base_repository.rb

Instance Method Summary collapse

Instance Method Details

#allArrat<Object>?

Método que devuelve todos los objetos activos

Returns:

  • (Arrat<Object>, nil)


11
# File 'lib/commons/repositories/base_repository.rb', line 11

delegate :all, to: :@db_client

#create!(object) ⇒ Boolean

Método que realiza un guardado de un objeto

Parameters:

  • (Object)

Returns:

  • (Boolean)

Raises:

  • (ActiveRecord::RecordInvalid)
  • (ActiveRecord::RecordNotSaved)


100
101
102
103
104
105
# File 'lib/commons/repositories/base_repository.rb', line 100

def create!(object)
  raise ArgumentError unless object.is_a?(@db_client)
  raise ActiveRecord::RecordInvalid.new(object) unless object.valid?

  save_object(object)
end

#create_from_params!(**params) ⇒ Object

Método que realiza un guardado de un objeto

Parameters:

  • params (Array<Hash>)

    Listado de parámetros del objeto

Returns:

  • (Object)

    Objeto creado



116
117
118
# File 'lib/commons/repositories/base_repository.rb', line 116

def create_from_params!(**params)
  @db_client.create!(**params)
end

#deletedObject?

Método que devuelve todos los objetos que han sido eliminados

Returns:

  • (Object, nil)

Raises:

  • (ActiveModel::MissingAttributeError)


26
27
28
29
30
# File 'lib/commons/repositories/base_repository.rb', line 26

def deleted
  raise ActiveModel::MissingAttributeError unless @db_client.include? Commons::Concerns::Extensions::SoftDeleted

  @db_client.unscoped.where.not(deleted_at: nil)
end

#destroy!(object) ⇒ Object

Método que realiza un borrado lógico de un objeto

Parameters:

  • id (UUID)

    Identificador del objeto

Returns:

  • (Object)

    Objeto eliminado



193
194
195
196
197
198
199
# File 'lib/commons/repositories/base_repository.rb', line 193

def destroy!(object)
  if @db_client.include? Commons::Concerns::Extensions::SoftDeleted
    soft_delete!(object)
  else
    hard_delete!(object)
  end
end

#findObject?

Método que devuelve el objeto según su ID

Returns:

  • (Object, nil)


37
# File 'lib/commons/repositories/base_repository.rb', line 37

delegate :find, to: :@db_client

#find_byObject?

Método que devuelve el objeto según parámetros

Returns:

  • (Object, nil)


55
# File 'lib/commons/repositories/base_repository.rb', line 55

delegate :find_by, to: :@db_client

#find_by!Object

Método que devuelve el objeto según parámetros

Returns:

  • (Object)

Raises:

  • (ActiveRecord::RecordNotFound)


75
# File 'lib/commons/repositories/base_repository.rb', line 75

delegate :find_by!, to: :@db_client

#find_deleted(id) ⇒ Object?

Método que devuelve el objeto según su ID

Returns:

  • (Object, nil)

Raises:

  • (ActiveModel::MissingAttributeError)


44
45
46
47
48
# File 'lib/commons/repositories/base_repository.rb', line 44

def find_deleted(id)
  raise ActiveModel::MissingAttributeError unless @db_client.include? Commons::Concerns::Extensions::SoftDeleted

  @db_client.unscoped.where(id: id).where.not(deleted_at: nil).first
end

#find_deleted_by(params) ⇒ Object?

Método que devuelve el objeto según parámetros

Returns:

  • (Object, nil)

Raises:

  • (ActiveModel::MissingAttributeError)


62
63
64
65
66
# File 'lib/commons/repositories/base_repository.rb', line 62

def find_deleted_by(params)
  raise ActiveModel::MissingAttributeError unless @db_client.include? Commons::Concerns::Extensions::SoftDeleted

  @db_client.unscoped.where.not(deleted_at: nil).where(**params).first
end

#find_deleted_by!(params) ⇒ Object

Método que devuelve el objeto según parámetros

Returns:

  • (Object)

Raises:

  • (ActiveRecord::RecordNotFound)


84
85
86
87
88
# File 'lib/commons/repositories/base_repository.rb', line 84

def find_deleted_by!(params)
  raise ActiveModel::MissingAttributeError unless @db_client.include? Commons::Concerns::Extensions::SoftDeleted

  @db_client.unscoped.where.not(deleted_at: nil).where(**params).first!
end

#find_or_create_by!Object

Método que realiza una busqueda o guardado de un objeto

Parameters:

  • params (Array<Hash>)

    Listado de parámetros del objeto

  • block (block)

Returns:

  • (Object)

    Objeto creado



130
# File 'lib/commons/repositories/base_repository.rb', line 130

delegate :find_or_create_by!, to: :@db_client

#update!(object) ⇒ Boolean

Método que guarda los cambios realizados a una instancia del objeto

Parameters:

  • (Object)

Returns:

  • (Boolean)

Raises:

  • (ActiveRecord::RecordInvalid)
  • (ActiveRecord::RecordNotSaved)


157
158
159
160
161
162
163
164
165
# File 'lib/commons/repositories/base_repository.rb', line 157

def update!(object)
  if !object.is_a?(@db_client) || object.id.blank?
    raise ArgumentError
  end

  raise ActiveRecord::RecordInvalid.new(object) unless object.valid?

  save_object(object)
end

#update_from_params!(id:, **params) ⇒ Object

Método que realiza un guardado de un objeto

Parameters:

  • params (Array<Hash>)

    Listado de parámetros del objeto

Returns:

  • (Object)

    Objeto creado



176
177
178
179
180
181
# File 'lib/commons/repositories/base_repository.rb', line 176

def update_from_params!(id:, **params)
  object = @db_client.find_by!(id: id)
  object.update!(params)

  object
end

#whereObject? Also known as: query

Método que devuelve todos los objetos que no han sido eliminados

Returns:

  • (Object, nil)


18
# File 'lib/commons/repositories/base_repository.rb', line 18

delegate :where, to: :@db_client

#where_first_or_create!(params, attributes = nil, &block) ⇒ Object

Método que realiza una busqueda de la primer entrada, en caso de no encontrarlo crea un objeto con el bloque

Parameters:

  • params (Array<Hash>)

    Listado de parámetros del objeto

  • block (block)

Returns:

  • (Object)

    Objeto creado



143
144
145
# File 'lib/commons/repositories/base_repository.rb', line 143

def where_first_or_create!(params, attributes = nil, &block)
  @db_client.where(params).first_or_create!(attributes, &block)
end