grunt-node-pg-migrate

0.1.2 • Public • Published

grunt-node-pg-migrate

Migrate PostgreSQL database schema and data with node-pg-migrate

Getting started

Install with npm:

npm i grunt-node-pg-migrate --save

You may want to start with simple configuration:

   migrate: {
      options: {
        env: {
          DATABASE_URL: databaseUrl
        },
        verbose: true
      }
    }

where databaseUrl may be exctracted from your environment config like this:

var CONF = require('config'),
 databaseUrl = 'postgres://' + CONF.db.user + ':' + CONF.db.password + '@' + CONF.db.host + ':5432/' + CONF.db.name;

Create migration with command line command:

$ grunt migrate:create:migrate_name

It generates a new file based on template in your 'migrations' folder (see configuration section). For example, edit this file, using async library:

/* global exports, require */
 
var async = require('async');
exports.up = function (db, callback) {
  async.series([
    db.createTable.bind(db, 'users', {
      id: {
        type: 'int',
        primaryKey: true,
        autoIncrement: true
      },
      email: {
        type: 'string',
        unique: true,
        notNull: true
      },
      password: 'string',
      created_at: 'datetime',
      updated_at: 'datetime'
    }),
    db.createTable.bind(db, 'items', {
      id: {
        type: 'int',
        primaryKey: true,
        autoIncrement: true
      },
      user_id: 'int',
      published: 'boolean',
      title: 'string'
    })
  ], callback);
};
 
exports.down = function (db, callback) {
  async.series([
    db.dropTable.bind(db, 'users', {
      ifExists: true
    }),
    db.dropTable.bind(db, 'items', {
      ifExists: true
    })
  ], callback);
};

And then run the migration step up with grunt migration command.

Targets

migration:up - run all available migrations up (or just migration). For example, to update database to specified migration run `grunt migration:up

migration:down - run one migration down

migration:create:%name% - create the new migration javascript file from template

Configuration

env

Environment variables for running db-migrate.

dir

Default migrations folder is migrations. But you can choose another:

migrate : {
    options: {
      dir: 'db/schema-migrations'
  }
}

verbose

Verbose output migration process.

Other params

You could use any of db-migrate params.

Useful examples

Clean DB

 grunt.registerTask('cleandb', 'Clean db and re-apply all migrations', function () {
    var fs = require('fs');
    var files = fs.readdirSync('./migrations');
    for (var i = 0; i < files.length; i++) {
      grunt.task.run('migrate:down');
    }
    grunt.task.run('migrate:up');
  });

Readme

Keywords

none

Package Sidebar

Install

npm i grunt-node-pg-migrate

Weekly Downloads

1

Version

0.1.2

License

MIT

Last publish

Collaborators

  • paulxtiseo