Files
db-migrate/README.md
2026-03-10 11:42:17 +01:00

89 lines
2.8 KiB
Markdown

# 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=
```