UNPKG

silvie

Version:

Typescript Back-end Framework

71 lines (69 loc) 2.74 kB
"use strict"; 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;