Migration Usage
You can use the Migration feature either via CLI or programmatically via API.
CLI
When you install firenze
in your project, you will have access to it via:
$ npm install --save firenze
$ ./node_modules/.bin/firenze
If you have installed firenze
globally, then you can have access to it directly:
$ npm install -g firenze
$ firenze
Available commands
You can have info about available commands for Migration by running this:
$ firenze migration
Commands:
list List migrations
current Show current migration version
generate Generate a new migration file
run [name] Run specific migration by name
runAll Run all pending migrations
rollback [name] Roll back specific migration by name
Options:
--db Path to database file [required]
--db-name Name of database instance (if path exports multiple named
instances)
--directory Directory containing migration files
--table Table for migrations (defaults to `migrations`)
Running a command
Assuming you are exporting your Database instance from a file in ./config/db.js
:
// ./config/db.js
var f = require('firenze');
var MysqlAdapter = require('firenze-mysql-adapter');
module.exports = new f.Database({
adapter: MysqlAdapter,
// credentials...
migrations: {
table: 'migrations', // table for migrations info
directory: __dirname + '/migrations', // directory where files will be stored
}
});
List migrations
You can now run the command specifying the path to the db.js
file like this:
$ firenze migration list --db ./config/db.js
Migrations list:
20151225180000_firstMigration.js
20151225183000_secondMigration.js [new]
Items ending with [new]
indicates those migrations have not been run yet.
Run a migration
$ firenze migration run 20151225183000_secondMigration.js --db ./config/db.js
Run all pending migrations
$ firenze migration runAll --db ./config/db.js
Generate a new migration file
$ firenze migration generate someNameHere --db ./config/db.js
Rolling back
If you feel a migration didn't go right, you can roll it back too:
$ firenze migration rollback 20151225183000_secondMigration.js --db ./config/db.js
API
To use Migrations programmatically:
var f = require('firenze');
var Migration = f.Migration;
var db = require('./config/db');
var migration = new Migration({
db: db,
// optional
directory: __dirname + '/migrations',
table: 'migrations'
});
You now have access to methods like .run()
, .generate
, etc. More in Methods section.