An exotically simple database migration tool for node pg.
- Dead simple, zero config!
- Write up and down migrations in the same .sql file!
- Lightweight and easy to integrate into workflows!
npm install --save migratorosaurus
Your environment should also have pg installed and have a postgres database setup.
In your database migration script file:
const { migratorosaurus } = require('migratorosaurus');
migratorosaurus('postgres://localhost:5432/database', {
directory: `sql/migrations`,
table: 'my_migration_history',
});
Migration file should be named by the following pattern -.sql, for example: 1-create.sql
. It is important that file indices are in the correct numerical order. To ease this process you can use the built in cli to create a new migration:
migratorosaurus --directory migrations --name create-person-table
Sample migration file contents:
-- % up migration % --
CREATE TABLE person (
id SERIAL PRIMARY KEY,
name varchar(100) NOT NULL
);
-- % down migration % --
DROP TABLE person;
Migrations will be split by up/down comments. Ensure they follow above pattern.
First argument is a required pg client configuration.
Second argument is an optional configuration object.
- directory The directory that contains your migation .sql files. Defaults to "migrations".
- log Function to handle logging, e.g. console.log.
- table The name of the database table that stores migration history. Default to "migration_history".
- target A specific migration that you would like to up/down migrate. Any migrations between the last migrated migration and the target will be up/down migrated as well.
Download the project repository and initiate development with the following commands:
git clone https://github.com/gabts/migratorosaurus
cd migratorosaurus
yarn # installs dependencies
yarn tsc -w # watch and compile TypeScript on changes
To test that any changes did not break the package first ensure that you have a PostgreSQL database running. Then run yarn mocha
with the database connection string as an node env variable.
DATABASE_URL="postgres://localhost:5432/database" yarn mocha --verbose