class Commons::Repositories::BaseRepository

Public Class Methods

new() click to toggle source
# File lib/commons/repositories/base_repository.rb, line 203
def initialize
  @db_client = class_object
end

Public Instance Methods

create!(object) click to toggle source

Método que realiza un guardado de un objeto

@param [Object]

@return [Boolean]

@raise [ActiveRecord::RecordInvalid] @raise [ActiveRecord::RecordNotSaved]

# 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) click to toggle source

Método que realiza un guardado de un objeto

@param [Array<Hash>] params Listado de parámetros del objeto

@return [Object] Objeto creado

@raises [ActiveRecord::RecordInvalid]

# File lib/commons/repositories/base_repository.rb, line 116
def create_from_params!(**params)
  @db_client.create!(**params)
end
deleted() click to toggle source

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

@return [Object, nil]

# 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) click to toggle source

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

@param [UUID] id Identificador del objeto

@return [Object] Objeto eliminado

@raises [ActiveRecord::RecordInvalid] @raises [ActiveModel::MissingAttributeError]

# 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
find_deleted(id) click to toggle source

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

@return [Object,nil]

# 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) click to toggle source

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

@return [Object,nil]

# 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) click to toggle source

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

@return [Object]

@raise [ActiveRecord::RecordNotFound]

# 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
update!(object) click to toggle source

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

@param [Object]

@return [Boolean]

@raise [ActiveRecord::RecordInvalid] @raise [ActiveRecord::RecordNotSaved]

# 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) click to toggle source

Método que realiza un guardado de un objeto

@param [Array<Hash>] params Listado de parámetros del objeto

@return [Object] Objeto creado

@raises [ActiveRecord::RecordInvalid]

# 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
where_first_or_create!(params, attributes = nil, &block) click to toggle source

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

@param [Array<Hash>] params Listado de parámetros del objeto @param [block] block

@return [Object] Objeto creado

@raises [ActiveRecord::RecordInvalid]

# 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

Protected Instance Methods

class_object() click to toggle source
# File lib/commons/repositories/base_repository.rb, line 207
def class_object
  model_name = self.class.to_s.gsub("Repository", "")
  Object.const_get model_name
end

Private Instance Methods

hard_delete!(object) click to toggle source
# File lib/commons/repositories/base_repository.rb, line 225
def hard_delete!(object)
  object.destroy!

  object
end
save_object(object) click to toggle source
# File lib/commons/repositories/base_repository.rb, line 214
def save_object(object)
  object.save
end
soft_delete!(object) click to toggle source
# File lib/commons/repositories/base_repository.rb, line 218
def soft_delete!(object)
  raise ActiveModel::MissingAttributeError unless @db_client.column_names.include?("deleted_at")
  object.update!(deleted_at: Time.current)

  object
end