@heisian/sequelize-cli
Version:
The Sequelize CLI
102 lines (74 loc) • 2.63 kB
JavaScript
;
var _bluebird = require('bluebird');
var _yargs = require('../core/yargs');
var _migrator = require('../core/migrator');
var _helpers = require('../helpers');
var _helpers2 = _interopRequireDefault(_helpers);
var _lodash = require('lodash');
var _cliColor = require('cli-color');
var _cliColor2 = _interopRequireDefault(_cliColor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Sequelize = _helpers2.default.generic.getSequelize();
exports.builder = function (yargs) {
return (0, _yargs._baseOptions)(yargs).help().argv;
};
exports.handler = function () {
var _ref = (0, _bluebird.coroutine)(function* (args) {
var command = args._[0];
// legacy, gulp used to do this
yield _helpers2.default.config.init();
var sequelize = getDatabaseLessSequelize();
var config = _helpers2.default.config.readConfig();
switch (command) {
case 'db:create':
yield sequelize.query(`CREATE DATABASE ${sequelize.getQueryInterface().quoteIdentifier(config.database)}`, {
type: sequelize.QueryTypes.RAW
}).catch(function (e) {
return _helpers2.default.view.error(e);
});
_helpers2.default.view.log('Database', _cliColor2.default.blueBright(config.database), 'created.');
break;
case 'db:drop':
yield sequelize.query(`DROP DATABASE ${sequelize.getQueryInterface().quoteIdentifier(config.database)}`, {
type: sequelize.QueryTypes.RAW
}).catch(function (e) {
return _helpers2.default.view.error(e);
});
_helpers2.default.view.log('Database', _cliColor2.default.blueBright(config.database), 'dropped.');
break;
}
process.exit(0);
});
return function (_x) {
return _ref.apply(this, arguments);
};
}();
function getDatabaseLessSequelize() {
var config = null;
try {
config = _helpers2.default.config.readConfig();
} catch (e) {
_helpers2.default.view.error(e);
}
config = (0, _lodash.cloneDeep)(config);
config = (0, _lodash.defaults)(config, { logging: _migrator.logMigrator });
switch (config.dialect) {
case 'postgres':
case 'postgres-native':
config.database = 'postgres';
break;
case 'mysql':
delete config.database;
break;
case 'mssql':
config.database = 'master';
break;
default:
_helpers2.default.view.error(`Dialect ${config.dialect} does not support db:create / db:drop commands`);
}
try {
return new Sequelize(config);
} catch (e) {
_helpers2.default.view.error(e);
}
}