# db-migration Herramienta de CLI orientada a aplicar migraciones de la base de datos, específicamente para *PostgreSQL* ## Instalación De momento solo esta disponible para descargar desde el repositorio: ``` bash # npm (from Gitea registry) npm install db-migrate --registry=https://git.savefamilygps.net/api/packages/alvarsanmartin/npm/ # npm (from git) npm install "https://git.savefamilygps.net/alvarsanmartin/herramienta-migracion.git" # yarn yarn add "db-migrate@https://git.savefamilygps.net/alvarsanmartin/herramienta-migracion.git" ``` Para desarrollo local se puede linkar como paquete global o instalar como paquete local. ```bash # global npm run link yarn link #local npm install /path yarn add /path ``` ## Estructura de migraciones Para que la herramienta funcione se debe usar un directorio de migraciones que contenga archivos de migraciones con la siguiente estructura: ``` text migrations/ ├ 1.0.0_create-tables.sql ├ 1.2.0_date-columns.sql └ 1.2.5_date-format-fix.sql ``` Las migraciones se van a lanzar secuencialmente dentro de una transacción por lo que si alguna fallase, el resto no se aplicarían. *No se deben definir transacciones dentro de las migraciones* ## Tabla de versiones La versión de la última migración aplicada se almacena en la bases de datos en una tabla llamada db_versions (a no ser que se especifique otro nombre), junto a la fecha en la que se ha aplicado la versión. Por defecto se usará la ultima versión registrada, pero se puede sobrescribir desde los parámetros si se hubiesen hecho cambios manuales. ## Parámetros > Toda la información también se encuentra usando el parámetro --help ``` --help Show help [boolean] --version Show version number [boolean] -t, --target Versión objetivo de la migracion [string] -e, --env Path del archivo .env con los datos de la BDD [string] -m, --migrations Path del directorio de migrations [string] -v, --versionTable Nombre de la tabla donde se almacenan las versiones de la BDD, por defecto 'db_versions' [string] [default: "db_versions"] -b, --baseVersion Versión a partir de la cual se aplican las migraciones independientemente de la almacenada en BDD [string] ``` ## Variables de entrono Para establecer la conexión con postgres se leen las siguientes variables de entorno por defecto deberían ser PG_DATABASE, PG_HOST... pero por compatibilidad con el proyecto anterior las mantengo así. En el futuro igual migro a las nativas. ``` env POSTGRES_DATABASE= POSTGRES_HOST= POSTGRES_PORT= POSTGRES_USER= POSTGRES_PASSWORD= ```