Files
dbgate/api/src/proc/serverConnectionProcess.js
2020-01-05 09:39:41 +01:00

35 lines
902 B
JavaScript

const engines = require('../engines');
let systemConnection;
let storedConnection;
async function handleRefreshDatabases() {
const driver = engines(storedConnection);
const databases = await driver.listDatabases(systemConnection);
process.send({ msgtype: 'databases', databases });
}
async function handleConnect(connection) {
storedConnection = connection;
const driver = require(`../engines/${storedConnection.engine}/index`);
systemConnection = await driver.connect(storedConnection);
setInterval(handleRefreshDatabases, 30 * 1000);
}
const messageHandlers = {
connect: handleConnect,
};
async function handleMessage({ msgtype, ...other }) {
const handler = messageHandlers[msgtype];
await handler(other);
}
process.on('message', async message => {
try {
await handleMessage(message);
} catch (e) {
process.send({ msgtype: 'error', error: e.message });
}
});