silvie
Version:
Typescript Back-end Framework
71 lines (69 loc) • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var _database = _interopRequireDefault(require("../../../database"));
var _log = _interopRequireDefault(require("../../../utils/log"));
var _register = _interopRequireDefault(require("@babel/register"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/* eslint-disable @typescript-eslint/no-var-requires,global-require,import/no-dynamic-require,no-await-in-loop,no-restricted-syntax */
process.env.BABEL_DISABLE_CACHE = '1';
(0, _register.default)({
configFile: _path.default.resolve(process.silviePath, 'assets/babel.config.js'),
extensions: ['.ts', '.js', '.gql', '.graphql', '.json'],
ignore: []
});
var _default = async args => {
const migrationsDir = _path.default.resolve(process.rootPath, 'src/database/migrations');
let filenames = args._.slice(1);
if (filenames.length > 0) {
filenames = filenames.filter(file => {
const exists = _fs.default.existsSync(_path.default.resolve(migrationsDir, `${file}.ts`));
if (!exists) {
_log.default.error('[Silvie] Migration File Not Found');
(0, _log.default)(`There is no migration named '${file}'`);
}
return exists;
});
}
if (filenames.length === 0) {
filenames = _fs.default.readdirSync(migrationsDir).map(file => file.replace(/\.ts$/, ''));
}
if (filenames.length > 0) {
const migrations = filenames.map(file => {
const migration = require(_path.default.resolve(migrationsDir, file)).default;
if (!migration) {
_log.default.error('[Silvie] Migration Not Found');
(0, _log.default)(`There is no migration in '${file}'`);
}
return migration;
}).sort((a, b) => (a.order || 0) - (b.order || 0));
_database.default.init();
await _database.default.disableForeignKeyChecks();
if (args.rollback || args.refresh) {
for (const migration of migrations) {
await migration.prototype.down();
}
}
if (!args.rollback) {
if (args.update) {
for (const migration of migrations) {
await migration.prototype.update();
}
} else {
for (const migration of migrations) {
await migration.prototype.up();
}
}
}
await _database.default.enableForeignKeyChecks();
_database.default.closeConnection();
} else {
_log.default.warning('[Silvie] No Migrations Found');
(0, _log.default)('You can create new migrations using', _log.default.str`silvie make migration`.underscore().bright());
}
};
exports.default = _default;