n8n
Version:
n8n Workflow Automation Tool
66 lines • 2.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.close = exports.connectionState = exports.getConnection = void 0;
exports.transaction = transaction;
exports.init = init;
exports.migrate = migrate;
const typedi_1 = require("typedi");
const typeorm_1 = require("@n8n/typeorm");
const n8n_workflow_1 = require("n8n-workflow");
const constants_1 = require("./constants");
const migrationHelpers_1 = require("./databases/utils/migrationHelpers");
const config_1 = require("./databases/config");
let connection;
const getConnection = () => connection;
exports.getConnection = getConnection;
exports.connectionState = {
connected: false,
migrated: false,
};
let pingTimer;
if (!constants_1.inTest) {
const pingDBFn = async () => {
if (connection === null || connection === void 0 ? void 0 : connection.isInitialized) {
try {
await connection.query('SELECT 1');
exports.connectionState.connected = true;
return;
}
catch (error) {
n8n_workflow_1.ErrorReporterProxy.error(error);
}
finally {
pingTimer = setTimeout(pingDBFn, 2000);
}
}
exports.connectionState.connected = false;
};
pingTimer = setTimeout(pingDBFn, 2000);
}
async function transaction(fn) {
return await connection.transaction(fn);
}
async function init() {
if (exports.connectionState.connected)
return;
const connectionOptions = (0, config_1.getConnectionOptions)();
connection = new typeorm_1.DataSource(connectionOptions);
typedi_1.Container.set(typeorm_1.DataSource, connection);
await connection.initialize();
exports.connectionState.connected = true;
}
async function migrate() {
connection.options.migrations.forEach(migrationHelpers_1.wrapMigration);
await connection.runMigrations({ transaction: 'each' });
exports.connectionState.migrated = true;
}
const close = async () => {
if (pingTimer) {
clearTimeout(pingTimer);
pingTimer = undefined;
}
if (connection.isInitialized)
await connection.destroy();
};
exports.close = close;
//# sourceMappingURL=Db.js.map
;