UNPKG

n8n

Version:

n8n Workflow Automation Tool

66 lines 2.24 kB
"use strict"; 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