@pangaea-holdings/pg-simple-migrate
v0.1.0-beta4
Published
A plain sql database migration tool for postgresql.
Downloads
621
Maintainers
Keywords
Readme
pg-simple-migrate
A plain sql database migration tool for postgresql.
Features
- Plain sql based migrations
- Supports rollbacks and tagged releases
- DB mirgation state tracked in database table
- Atomic migrations, either they all succeed or nothing is written
Installation
yarn add @pangaea-holdings/pg-simple-migrateUpdate package.json scripts
{
"dependencies": {
"@pangaea-holdings/pg-simple-migrate": "^0.1.0",
},
"scripts": {
"migrate": "pg-simple-migrate"
}
}By adding migrate to scripts you can now access via yarn migrate [CMD]
Creating Migration Tables
pg-simple-migrate requires two tables, migrations migration_releases to be created to track migration state.
✅ Ensure that a valid DATABASE_URL env variable exists (ENV variables automatically loaded from .env)
ex: postrgesql://user:password@localhost:5432/db_name
yarn migrate installCreating a migration
yarn migrate makeThis will create two migration files <TIMESTAMP>__<NAME>.sql and <TIMESTAMP>__<NAME>__rollback.sql.
Running migrations
The most basic usage looks for all migrations in the migrations-folder and runs them in order of name (excluding files ending in __rollback.sql)
yarn migrate upTagging release
Every time a yarn migrate up is run in production it's best practice to supply a --release <GIT SHA TAG> to tag the release. This way the system can figure out
Rollbacks
Rollback the last set of migrations
yarn migrate rollbackRollback migrations to the state of a specific release
yarn migrate rollback --tag <GIT SHA>Commands
install
yarn migrate install
Creates the migration table
USAGE
$ yarn migrate install
OPTIONS
-m, --migrations-folder=migrations-folder [default: ./db/migrations]
-v, --verbose Show debug information
--db-url=db-url Postgres URL (default env
DATABASE_URL)make
yarn migrate make
Make a new migration
USAGE
$ yarn migrate make
OPTIONS
-h, --help show CLI help
-n, --name=name migration name
--migrations-folder=migrations-folder [default: ./db/migrations]up
yarn migrate up
Runs migrations
USAGE
$ yarn migrate up
OPTIONS
-f, --file=file Specify a specific migration file
to run [NOT RECOMMENDED IN
PRODUCTION]
-m, --migrations-folder=migrations-folder [default: ./db/migrations]
-v, --verbose Show debug information
--db-url=db-url Postgres URL (default env
DATABASE_URL)
--dry-run Don't execute migration, pretend
only
--release=release Associate all migrations to be run
with a release tag (ex: git commit
sha)rollback
yarn migrate rollback
Rolls back migrations, if supplied with no options rolls back last "batch" of migrations
USAGE
$ yarn migrate rollback
OPTIONS
-m, --migrations-folder=migrations-folder [default: ./db/migrations]
-v, --verbose Show debug information
--db-url=db-url Postgres URL (default env
DATABASE_URL)
--dry-run Don't execute migration, pretend
only
--no-prompt Do not prompt for confirmation of
rollback
--num-batches=num-batches [default: 1]
--release=release Rollback all migrations after a
specific release tag
