backend - using engine driver from plugin

This commit is contained in:
Jan Prochazka
2020-11-24 20:42:02 +01:00
parent 424aff5d93
commit c96cb08cfd
9 changed files with 58 additions and 42 deletions

View File

@@ -1,13 +1,12 @@
const engines = require('dbgate-engines');
const driverConnect = require('../utility/driverConnect');
const childProcessChecker = require('../utility/childProcessChecker');
const requireEngineDriver = require('../utility/requireEngineDriver');
function start() {
childProcessChecker();
process.on('message', async (connection) => {
try {
const driver = engines(connection);
const conn = await driverConnect(driver, connection);
const driver = requireEngineDriver(connection);
const conn = await driver.connect(connection);
const res = await driver.getVersion(conn);
process.send({ msgtype: 'connected', ...res });
} catch (e) {

View File

@@ -1,7 +1,6 @@
const engines = require('dbgate-engines');
const stableStringify = require('json-stable-stringify');
const driverConnect = require('../utility/driverConnect');
const childProcessChecker = require('../utility/childProcessChecker');
const requireEngineDriver = require('../utility/requireEngineDriver');
let systemConnection;
let storedConnection;
@@ -26,14 +25,14 @@ async function checkedAsyncCall(promise) {
}
async function handleFullRefresh() {
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
analysedStructure = await checkedAsyncCall(driver.analyseFull(systemConnection));
process.send({ msgtype: 'structure', structure: analysedStructure });
setStatusName('ok');
}
async function handleIncrementalRefresh() {
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
const newStructure = await checkedAsyncCall(driver.analyseIncremental(systemConnection, analysedStructure));
if (newStructure != null) {
analysedStructure = newStructure;
@@ -58,8 +57,8 @@ async function handleConnect({ connection, structure }) {
lastPing = new Date().getTime();
if (!structure) setStatusName('pending');
const driver = engines(storedConnection);
systemConnection = await checkedAsyncCall(driverConnect(driver, storedConnection));
const driver = requireEngineDriver(storedConnection);
systemConnection = await checkedAsyncCall(driver.connect(storedConnection));
if (structure) {
analysedStructure = structure;
handleIncrementalRefresh();
@@ -82,7 +81,7 @@ function waitConnected() {
async function handleQueryData({ msgid, sql }) {
await waitConnected();
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
try {
const res = await driver.query(systemConnection, sql);
process.send({ msgtype: 'response', msgid, ...res });

View File

@@ -1,7 +1,6 @@
const engines = require('dbgate-engines');
const stableStringify = require('json-stable-stringify');
const driverConnect = require('../utility/driverConnect');
const childProcessChecker = require('../utility/childProcessChecker');
const requireEngineDriver = require('../utility/requireEngineDriver');
let systemConnection;
let storedConnection;
@@ -10,7 +9,7 @@ let lastStatus = null;
let lastPing = null;
async function handleRefresh() {
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
try {
const databases = await driver.listDatabases(systemConnection);
setStatusName('ok');
@@ -46,9 +45,9 @@ async function handleConnect(connection) {
setStatusName('pending');
lastPing = new Date().getTime();
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
try {
systemConnection = await driverConnect(driver, storedConnection);
systemConnection = await driver.connect(storedConnection);
handleRefresh();
setInterval(handleRefresh, 30 * 1000);
} catch (err) {
@@ -66,8 +65,8 @@ function handlePing() {
}
async function handleCreateDatabase({ name }) {
const driver = engines(storedConnection);
systemConnection = await driverConnect(driver, storedConnection);
const driver = requireEngineDriver(storedConnection);
systemConnection = await driver.connect(storedConnection);
console.log(`RUNNING SCRIPT: CREATE DATABASE ${driver.dialect.quoteIdentifier(name)}`);
await driver.query(systemConnection, `CREATE DATABASE ${driver.dialect.quoteIdentifier(name)}`);
await handleRefresh();

View File

@@ -1,4 +1,3 @@
const engines = require('dbgate-engines');
const uuidv1 = require('uuid/v1');
const path = require('path');
const fs = require('fs');
@@ -6,8 +5,8 @@ const _ = require('lodash');
const childProcessChecker = require('../utility/childProcessChecker');
const goSplit = require('../utility/goSplit');
const driverConnect = require('../utility/driverConnect');
const { jsldir } = require('../utility/directories');
const requireEngineDriver = require('../utility/requireEngineDriver');
let systemConnection;
let storedConnection;
@@ -119,8 +118,8 @@ class StreamHandler {
async function handleConnect(connection) {
storedConnection = connection;
const driver = engines(storedConnection);
systemConnection = await driverConnect(driver, storedConnection);
const driver = requireEngineDriver(storedConnection);
systemConnection = await driver.connect(storedConnection);
for (const [resolve] of afterConnectCallbacks) {
resolve();
}
@@ -142,7 +141,7 @@ function waitConnected() {
async function handleExecuteQuery({ sql }) {
await waitConnected();
const driver = engines(storedConnection);
const driver = requireEngineDriver(storedConnection);
let resultIndex = 0;
for (const sqlItem of goSplit(sql)) {