Modelos
Estructura de modelos en la app
Creación
Los modelos se ubican en la carpeta: app/models. Para crear un nuevo modelo se debe usar el comando:
Para indicar cual es la tabla que usará el modelo, se debe especificar la variable estáctica: table
Soft deleting
- Documentación: https://packages.adonisjs.com/packages/lucid-soft-deletes
A fin de garantizar estabilidad de datos con el tiempo, se implementó la logica de un pseudo eliminado, donde los elementos que se marquen como eliminados tendrán un campo llamado: deleteAt. A su vez, cada modelo deberá heredar SoftDeletes del paquete: adonis-lucid-soft-deletes, ejemplo: app/models/planificacion/planificacion.ts
- Obtener Archivados: Al trabajar con el softdeleting, se tendrá que tener una forma de acceder a los registros eliminados, para ello, este paquete implementa la función onlyTrashed que es agregada al modelo del cual se requieren traer sus elementos archivados, un ejemplo de ello lo podemos ver en: app/controllers/planificacion/planificacion_controller.ts
- Restaurar: Si se necesita restaurar un elemento borrado, para ello requerimos aplicar el metodo restore() sobre el registro archivado, ejemplo: app/controllers/planificacion/planificacion_controller.ts
- Eliminar definitivamente: Si por el contrario, necesitamos eliminar el registro por completo de la base de datos, debemos llamar a la función: forceDelete(), ejemplo: app/controllers/planificacion/planificacion_controller.ts
Filtering
- Documentacion: https://packages.adonisjs.com/packages/lucid-filter
Para trabajar con consultas que necesitan implementar múltiples filtros a la vez, se ha instalado el paquete filters de adonijs, el cual permite aplicar filtros de forma estructurada a las consultas de una forma sencilla, para ello debemos heredar el objeto filterable en cada modelo que se desee aplicar filtering e indicar el archivo que se utilizará para el filtrado, ejemplo: app/models/planificacion/planificacion.ts
- Aplicación: Para aplicar los filters, se necesitará crear un archivo filter con el comando:
Esto creará un archivo con los filtros a aplicar al modelo necesario dentro la carpeta app/models/filters, ejemplo app/controllers/planificacion/planificacion_controller.ts
Donde el archivo app/models/filters/planificacion_filter.ts luce como:
Importante Actualmente, debido a una incompatiblidad al generar el build de adonisjs: node ace build no se pueden aplicar filters en elementos archivados, por lo que los filtros deben aplicarse de forma nativa. Para saber más ir a la funcion index() en app/controllers/planificacion/planificacion_controller.ts