abstract-migrate
Version:
Storage-agnostic migration runner
67 lines (54 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _config = require('../config');
var _config2 = _interopRequireDefault(_config);
var _promise = require('./promise');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var requiredFunctions = ['load', 'add', 'remove', 'acquireLock', 'releaseLock'];
function checkEngine(engine) {
requiredFunctions.forEach(function (fn) {
if (typeof engine[fn] !== 'function') {
throw new Error('Engine does not have a \'' + fn + '\' function');
}
});
}
function getEngine() {
// We need this set up at this point...
if (!_config2.default.engine) {
throw new Error('No engine has been set');
}
var engine = require(_path2.default.join(process.cwd(), _config2.default.engine));
try {
checkEngine(engine.default);
return engine.default;
} catch (err) {
checkEngine(engine);
}
return engine;
}
exports.default = {
load: function load() {
var engine = getEngine();
return (0, _promise.promiseback)(engine.load);
},
add: function add(migrations) {
var engine = getEngine();
return (0, _promise.promiseback)(engine.add, migrations);
},
remove: function remove(migrations) {
var engine = getEngine();
return (0, _promise.promiseback)(engine.remove, migrations);
},
acquireLock: function acquireLock() {
var engine = getEngine();
return (0, _promise.promiseback)(engine.acquireLock);
},
releaseLock: function releaseLock() {
var engine = getEngine();
return (0, _promise.promiseback)(engine.releaseLock);
}
};