From 2f5c1d2b2f75026003e40187bffa0da3de52df26 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 10 Feb 2018 16:25:01 +0000 Subject: Perform query execution on separate thread --- renderer.js | 61 ++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 21 deletions(-) (limited to 'renderer.js') diff --git a/renderer.js b/renderer.js index 4392daa..a7da9da 100644 --- a/renderer.js +++ b/renderer.js @@ -1,8 +1,8 @@ "use strict"; +const { ipcRenderer } = require('electron'); const $ = require("jquery"); const cm = require("codemirror"); -const { Pool } = require("pg"); require("datatables")(window, $); require("codemirror/mode/sql/sql"); const Split = require("split.js"); @@ -14,43 +14,61 @@ const editorContext = cm(document.getElementById("editor"), { lineNumbers: true }); -const connectionPool = new Pool({ - user: "postgres", - host: "localhost", - database: "postgres", - password: "", - port: 5432 -}); - let dataTable; +let execStartTime; +let execTimerInterval; +let execElapsedTime; function runQuery() { _setExecutionStatusIndicator("RUNNING"); - + _startExecTimer(); + var query = editorContext.getValue(); console.log(query); - connectionPool.query(query, (err, res) => { - console.log(err, res) - - if(err === undefined) { - handleResult(res); - } - else { - handleError(err); - } - - }); + _destroyDataTable(); + + ipcRenderer.send("queryExecutor.runQuery", query); +} + +ipcRenderer.on("queryExecutor.runQueryComplete", (event, response) => { + _stopExecTimer(); + if(response.error === undefined) { + handleResult(response.result); + } + else { + handleError(response.error); + } + + + +}); + +function _startExecTimer() { + execStartTime = new Date; + execElapsedTime = 0; + execTimerInterval = setInterval(function () { + execElapsedTime = Date.now() - execStartTime; + $("#execution-time").text("exec time: " + execElapsedTime + "ms"); + }, 10); +} + +function _stopExecTimer() { + clearInterval(execTimerInterval); + execStartTime = null; } function handleError(err) { + _stopExecTimer(); _destroyDataTable(); $("#result-error").text("Error (" + err.code + ") - " + err.message); _setExecutionStatusIndicator("ERROR"); + $("#execution-time").text("failed after " + execElapsedTime + " ms"); } function handleResult(results) { + _stopExecTimer(); $("#result-error").empty(); _destroyDataTable(); @@ -63,6 +81,7 @@ function handleResult(results) { }); _setExecutionStatusIndicator("OK"); + $("#execution-time").text("returned " + results.rowCount + " rows in " + execElapsedTime + " ms"); } function _mapColumnProperties(results) { -- cgit v1.2.3