@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
75 lines • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createDatabase = createDatabase;
exports.checkIfDatabaseExists = checkIfDatabaseExists;
const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk");
const SequelizeConnectionManager_1 = require("./SequelizeConnectionManager");
async function createDatabase(sequelizeInstanceConfig, databaseName) {
switch (sequelizeInstanceConfig.dialect) {
case 'postgres':
return setupPostgresDatabase(sequelizeInstanceConfig, databaseName);
case 'mssql':
return setupMssqlDatabase(sequelizeInstanceConfig, databaseName);
case 'mysql':
return setupMysqlDatabase(sequelizeInstanceConfig, databaseName);
case 'sqlite':
return undefined;
default:
throw new processcube_engine_sdk_1.InternalServerError(`Sequelize dialect \`${sequelizeInstanceConfig.dialect}\` is not supported.`, 'setup');
}
}
async function checkIfDatabaseExists(config) {
return (0, SequelizeConnectionManager_1.databaseExists)(config);
}
async function setupPostgresDatabase(sequelizeInstanceConfig, databaseName) {
const dbCreationConfig = Object.assign({}, sequelizeInstanceConfig, { database: 'postgres' });
let dbCreationInstance;
try {
dbCreationInstance = await (0, SequelizeConnectionManager_1.getSequelizeInstanceWithoutModels)(dbCreationConfig);
}
catch (error) {
const dbCreationError = new processcube_engine_sdk_1.InternalServerError(`Could not create database: ${error.message}`, 'setup');
dbCreationError.fatal = true;
dbCreationError.additionalInformation = {
...error.additionalInformation,
};
throw dbCreationError;
}
await dbCreationInstance.query(`CREATE DATABASE ${databaseName}`);
await (0, SequelizeConnectionManager_1.destroySequelizeInstance)();
}
async function setupMssqlDatabase(sequelizeInstanceConfig, databaseName) {
const dbCreationConfig = Object.assign({}, sequelizeInstanceConfig, { database: undefined });
let dbCreationInstance;
try {
dbCreationInstance = await (0, SequelizeConnectionManager_1.getSequelizeInstanceWithoutModels)(dbCreationConfig);
}
catch (error) {
const dbCreationError = new processcube_engine_sdk_1.InternalServerError(`Could not create database: ${error.message}`, 'setup');
dbCreationError.fatal = true;
dbCreationError.additionalInformation = {
...error.additionalInformation,
};
throw dbCreationError;
}
await dbCreationInstance.query(`CREATE DATABASE [${databaseName}]`);
await (0, SequelizeConnectionManager_1.destroySequelizeInstance)();
}
async function setupMysqlDatabase(sequelizeInstanceConfig, databaseName) {
const dbCreationConfig = Object.assign({}, sequelizeInstanceConfig, { database: undefined });
let dbCreationInstance;
try {
dbCreationInstance = await (0, SequelizeConnectionManager_1.getSequelizeInstanceWithoutModels)(dbCreationConfig);
}
catch (error) {
const dbCreationError = new processcube_engine_sdk_1.InternalServerError(`Could not create database: ${error.message}`, 'setup');
dbCreationError.fatal = true;
dbCreationError.additionalInformation = {
...error.additionalInformation,
};
throw dbCreationError;
}
await dbCreationInstance.query(`CREATE DATABASE ${databaseName}`);
await (0, SequelizeConnectionManager_1.destroySequelizeInstance)();
}
//# sourceMappingURL=DatabaseCreation.js.map