migrat
Version:
A pluggable migration runner.
39 lines (33 loc) • 1.02 kB
JavaScript
var _ = require('lodash');
var async = require('async');
var MigratState = require('./MigratState.js');
function MigratStateStore() {
this._get = null;
this._set = null;
}
MigratStateStore.prototype.get = function(callback) {
this._get(function(err, serializedState) {
var state;
if (err) return callback(err);
serializedState = serializedState || '{}';
try { state = MigratState.unserialize(serializedState); }
catch (e) { return callback(new Error('Unable to parse state')); }
callback(null, state);
});
};
MigratStateStore.prototype.set = function(state, callback) {
if (!(state instanceof MigratState)) {
return callback(new Error('State must be an instance of MigratState'));
}
var serializedState = state.serialize();
this._set(serializedState, function(err) {
callback(err || null);
});
};
MigratStateStore.define = function(methods) {
var store = new MigratStateStore();
store._get = methods.get;
store._set = methods.set;
return store;
};
module.exports = MigratStateStore;