n8n
Version:
n8n Workflow Automation Tool
113 lines • 5.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = exports.collections = void 0;
const n8n_core_1 = require("n8n-core");
const typeorm_1 = require("typeorm");
const path = require("path");
const _1 = require(".");
const config = require("../config");
const entities_1 = require("./databases/entities");
const migrations_1 = require("./databases/postgresdb/migrations");
const migrations_2 = require("./databases/mysqldb/migrations");
const migrations_3 = require("./databases/sqlite/migrations");
exports.collections = {
Credentials: null,
Execution: null,
Workflow: null,
Webhook: null,
Tag: null,
};
async function init() {
const dbType = (await _1.GenericHelpers.getConfigValue('database.type'));
const n8nFolder = n8n_core_1.UserSettings.getUserN8nFolderPath();
let connectionOptions;
const entityPrefix = config.get('database.tablePrefix');
switch (dbType) {
case 'postgresdb':
const sslCa = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.ca'));
const sslCert = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.cert'));
const sslKey = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.key'));
const sslRejectUnauthorized = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.rejectUnauthorized'));
let ssl;
if (sslCa !== '' || sslCert !== '' || sslKey !== '' || !sslRejectUnauthorized) {
ssl = {
ca: sslCa || undefined,
cert: sslCert || undefined,
key: sslKey || undefined,
rejectUnauthorized: sslRejectUnauthorized,
};
}
connectionOptions = {
type: 'postgres',
entityPrefix,
database: (await _1.GenericHelpers.getConfigValue('database.postgresdb.database')),
host: (await _1.GenericHelpers.getConfigValue('database.postgresdb.host')),
password: (await _1.GenericHelpers.getConfigValue('database.postgresdb.password')),
port: (await _1.GenericHelpers.getConfigValue('database.postgresdb.port')),
username: (await _1.GenericHelpers.getConfigValue('database.postgresdb.user')),
schema: config.get('database.postgresdb.schema'),
migrations: migrations_1.postgresMigrations,
migrationsRun: true,
migrationsTableName: `${entityPrefix}migrations`,
ssl,
};
break;
case 'mariadb':
case 'mysqldb':
connectionOptions = {
type: dbType === 'mysqldb' ? 'mysql' : 'mariadb',
database: (await _1.GenericHelpers.getConfigValue('database.mysqldb.database')),
entityPrefix,
host: (await _1.GenericHelpers.getConfigValue('database.mysqldb.host')),
password: (await _1.GenericHelpers.getConfigValue('database.mysqldb.password')),
port: (await _1.GenericHelpers.getConfigValue('database.mysqldb.port')),
username: (await _1.GenericHelpers.getConfigValue('database.mysqldb.user')),
migrations: migrations_2.mysqlMigrations,
migrationsRun: true,
migrationsTableName: `${entityPrefix}migrations`,
timezone: 'Z',
};
break;
case 'sqlite':
connectionOptions = {
type: 'sqlite',
database: path.join(n8nFolder, 'database.sqlite'),
entityPrefix,
migrations: migrations_3.sqliteMigrations,
migrationsRun: false,
migrationsTableName: `${entityPrefix}migrations`,
};
break;
default:
throw new Error(`The database "${dbType}" is currently not supported!`);
}
Object.assign(connectionOptions, {
entities: Object.values(entities_1.entities),
synchronize: false,
logging: false,
});
let connection = await typeorm_1.createConnection(connectionOptions);
if (dbType === 'sqlite') {
let migrations = [];
try {
migrations = await connection.query(`SELECT id FROM ${entityPrefix}migrations where name = "MakeStoppedAtNullable1607431743769"`);
}
catch (error) {
}
await connection.runMigrations({
transaction: 'none',
});
if (migrations.length === 0) {
await connection.close();
connection = await typeorm_1.createConnection(connectionOptions);
}
}
exports.collections.Credentials = typeorm_1.getRepository(entities_1.entities.CredentialsEntity);
exports.collections.Execution = typeorm_1.getRepository(entities_1.entities.ExecutionEntity);
exports.collections.Workflow = typeorm_1.getRepository(entities_1.entities.WorkflowEntity);
exports.collections.Webhook = typeorm_1.getRepository(entities_1.entities.WebhookEntity);
exports.collections.Tag = typeorm_1.getRepository(entities_1.entities.TagEntity);
return exports.collections;
}
exports.init = init;
//# sourceMappingURL=Db.js.map
;