class Commons::Repositories::BaseRepository
Public Class Methods
# File lib/commons/repositories/base_repository.rb, line 203 def initialize @db_client = class_object end
Public Instance Methods
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
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
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
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
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
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
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
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
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
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
# 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
# File lib/commons/repositories/base_repository.rb, line 225 def hard_delete!(object) object.destroy! object end
# File lib/commons/repositories/base_repository.rb, line 214 def save_object(object) object.save end
# 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