Creando componentes para DBIx::Class
DBIx::Class es una librería Perl que permite gestionar objetos sobre una base de datos relacional (ORM).
Su diseño permite añadir componentes a una clase DBIC, los cuales son módulos que pueden sobrecargar un método concreto ó añadir otros, dado que se dispone de un sistema de herencia más controlado proporcionado por Class::C3.
Componentes deseables
Procedentes de un antiguo desarrollo para la empresa surgieron los siguientes componentes, implementados, por cierto, de forma muy similar a los que proporciona DBIC .
DeletedMark
Cambia la forma en que se borra un objeto de la base de datos, pasando del borrado físico a establecer una marca en una columna añadida al respecto.
- Atributos añadidos:
- Columna
_deleted
de tipo numérico que responde a la pregunta de si el objeto está borrado ó no.
- Columna
- Métodos sobrecargados:
delete
: activa la marca de borradoinsert
: se asegura de que la marca de borrado esté desactivada.search
: recupera sólo los que no están borrados.
- Métodos añadidos:
undelete
: desactiva la marca de borrado de un objeto.
History
Proporciona un registro automágico de los cambios efectuados sobre un objeto.
- Atributos añadidos:
- Nueva tabla 'History' con los siguientes atributos:
- Identificador del objeto destino de la operación (
nda_target
tal vez). - Marca de tiempo
- Clase de operación: create, delete y/ó update.
- Autor: identificador del usuario que ha efectuado la operación.
- Registro: Datos del objeto empaquetados como un texto sin longitud
fija (útil para posteriores operaciones de reconstrucción ó para
ampliar los informes de uso); en realidad se conservan dos conjuntos
de datos dependiendo de la operación:
before
: contenido del objeto antes de actuar sobre él.after
: contenido del objeto después de la operación.
- Identificador del objeto destino de la operación (
- Nueva tabla 'History' con los siguientes atributos:
- Métodos sobrecargados:
delete
: se actualiza el campobefore
.insert
: se actualiza el campoafter
.update
: se actualizan los camposbefore
yafter
.
Ownership
Usando una mezcla de identificación y autorización de usuarios permite el acceso únicamente a un conjunto de objetos sobre los que tienes derecho de acceso.
- Atributos añadidos:
- Tabla 'users'
- Tabla 'roles'
- Tabla 'acl'
Métodos sobrecargados:
Métodos añadidos: