@medusajs/utils
Version:
Medusa utilities functions shared by Medusa core and Modules
51 lines • 2.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildGenerateMigrationScript = buildGenerateMigrationScript;
const dal_1 = require("../../dal");
const load_module_database_config_1 = require("../load-module-database-config");
const migrations_1 = require("../../migrations");
const dml_1 = require("../../dml");
const to_kebab_case_1 = require("../../common/to-kebab-case");
const TERMINAL_SIZE = process.stdout.columns;
/**
* Utility function to build a migration generation script that will generate the migrations.
* Only used in mikro orm based modules.
* @param moduleName
* @param models
* @param pathToMigrations
*/
function buildGenerateMigrationScript({ moduleName, models, pathToMigrations, }) {
/**
* This script is only valid for mikro orm managers. If a user provide a custom manager
* he is in charge of running the migrations.
* @param options
* @param logger
* @param moduleDeclaration
*/
return async function ({ options, logger, } = {}) {
logger ??= console;
logger.info(new Array(TERMINAL_SIZE).join("-"));
logger.info("");
logger.info(`MODULE: ${moduleName}`);
const dbData = (0, load_module_database_config_1.loadDatabaseConfig)(moduleName, options);
const normalizedModels = (0, dml_1.toMikroOrmEntities)(models);
const orm = await (0, dal_1.mikroOrmCreateConnection)({
...dbData,
snapshotName: `.snapshot-${(0, to_kebab_case_1.kebabCase)(moduleName.replace("Service", ""))}`,
}, normalizedModels, pathToMigrations);
const migrations = new migrations_1.Migrations(orm);
try {
const { fileName } = await migrations.generate();
if (fileName) {
logger.info(`Generated successfully (${fileName}).`);
}
else {
logger.info(`Skipped. No changes detected in your models.`);
}
}
catch (error) {
logger.error(`Failed with error ${error.message}`, error);
}
};
}
//# sourceMappingURL=migration-generate.js.map
;