Adonis.js — Migraciones

Elihu A. Cruz
4 min readJul 11, 2019

Leer en blog oficial (elihu.dev): Adonis Introducción

A grandes rasgos, una migración es un control de versiones sobre los cambios que se realizan a la base de datos en un proyecto.

En Adonis.js contamos con un modulo para realizar migraciones vía consola de comandos CLI. Cada migración crea un fichero en la carpeta “database/migrations”. Que a su vez obtiene el nombre de la tabla a crear o alterar más la fecha de creación exacta con Time stamp.

Las ventajas de utilizar un sistema de migraciones son muchas, pero estas pueden ser resumidas en factores asociados a la escalabilidad de tú sistema y simplicidad con la que un equipo de desarrollo puede configurar un entorno de trabajo. Para comenzar a utilizar migraciones Adonis.js necesitarás lo siguiente.

Requisitos

Configuración / Verificación

Adonis utiliza una serie de librerías que gestionan de forma interna todas estas operaciones de creación y actualización de la base de datos. Para verificar que tu proyecto cuenta con todo lo necesario puede ejecutar el comando:

adonis migration:status

Con el cual verificaremos que el sistema tenga incluido el proveedor necesario. En caso de obtener un error, revisa tu configuración en búsqueda del proveedor del ORM Lucid y migraciones en la carpeta “start/app.js”

// Debería lucir algo asíconst providers = [
'@adonisjs/lucid/providers/LucidProvider'
]

const aceProviders = [
'@adonisjs/lucid/providers/MigrationsProvider'
]

Crear una migración

Al contar con todas las configuraciones listas, estamos listos para realizar una migración, como podrás imaginarte las migraciones se realizan utilizando el comando adonis make, pero esta ocasión agregaremos lo siguiente:

adonis make:migration places --action create

Indicando con dos puntos que crearemos una migración, seguido de un espacio el nombre de la migración y finalmente una bandera “ — action” con el valor “create” que indicará al CLI si debe crear una nueva tabla o seleccionarla para modificarla.

Por convención todas las migraciones tienen que hacer referencia a una tabla en ingles con el nombre pluralizado. “place” = “places” Siguiendo las reglas del idioma para los plurales.

Al ejecutar el comando obtendremos la confirmación de haber efectuado la migración.

Resultado de la creación de migración

Configuración de migración

Tras ejecutar el comando de creación, tendremos el nuevo archivo de la migración en nuestro proyecto. el cual contiene un clase con dos funciones, una llamada UP y otra DOWN. La función UP se ejecuta cuando invocamos la función de migración “adonis migration:run” y la función DOWN se llama cuando se realiza un Rollback o retroceso “adonis migration:rollback”.

Funciones iniciales

Ahora deberemos configurar la migración para tener las columnas necesarias en nuestro modelo de base de datos.

Adonis utiliza la librería Knex.js para obtener el SQL necesario para ejecutar una operación, así que podrás utilizar las funciones de Knex.js en adonis sin problemas.

Los principales tipos a utilizar son: Integer, Float, String, Text y Boolean

y podríamos utilizar una descripción bastante similar a la siguiente:

Tipos de datos para columnas

Existen muchas más funciones disponibles para la creación de columnas con Knex, a continuación podrás ver algunas de estas:

  • Nulos
table.string('notes').nullable()
  • No nulos
table.string('name').notNullable()
  • Valores por defecto
table.text('description').defaultTo('Sin descripción')
  • Limite de caracteres para Cadenas
table.string('name', 150)
  • Referencias y llaves foráneas
table.integer('user_id').unsigned().references('id').inTable('users')

Ejecutar migración

Tras contar con un esquema de base de datos definido en el archivo de la migración, solo resta ejecutar un comando del CLI en adonis para que estos cambios se reflejen en la base de datos.

Con el comando:

adonis migration:run

Deberíamos obtener un mensaje similar al siguiente

Ejecución de migración

Si quisieramos regresar a un estado anterior, solo bastaría con que invocar a comando:

adonis migration:rollback

Y con esto regresaríamos a un estado anterior. Recuerda que las migraciones funcionan como una pila, el ultimo en entrar, será el primero en salir. por lo que si realizar más de una migración a la vez, el sistema quitará todas aquellas que se procesaron en esa ejecución de comando.

Realiza tu plan de migraciones por pequeños pasos, no definas todo en un inicio, la idea es ir agregando parte por parte, y esto garantizará que en un futuro las migraciones se ejecuten correctamente y sin errores entre plataformas.

--

--