From 0c0fdc4e61d07d8883c382a4dd9d1afaa1874c33 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 17 Feb 2018 18:29:47 +0000 Subject: Add instance IDs to allow IPC message routing --- query-executor.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'query-executor.js') diff --git a/query-executor.js b/query-executor.js index 7bd836d..871da9e 100644 --- a/query-executor.js +++ b/query-executor.js @@ -13,13 +13,14 @@ const connectionPool = new Pool({ ipcRenderer.on("queryExecutor.runQuery", (event, payload) => { - connectionPool.query(payload, (err, res) => { + connectionPool.query(payload.query, (err, res) => { console.log(err, res) ipcRenderer.send("queryExecutor.runQueryComplete", { "error": err, - "result": res + "result": res, + "editorInstanceId": payload.editorInstanceId }); }); @@ -50,7 +51,8 @@ ipcRenderer.on("queryExecutor.queryTableMetadata", (event, payload) => { ipcRenderer.send("queryExecutor.queryTableMetadataComplete", { "error": err, - "result": tableMetadata + "result": tableMetadata, + "editorInstanceId": payload.editorInstanceId }); }); -- cgit v1.2.3 From b81c0f834f7f2285c40cfd57eb2943140025edad Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 20 Feb 2018 21:44:28 +0000 Subject: Dynamically create query executors - WIP --- query-executor.js | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) (limited to 'query-executor.js') diff --git a/query-executor.js b/query-executor.js index 871da9e..0c5b440 100644 --- a/query-executor.js +++ b/query-executor.js @@ -1,30 +1,39 @@ "use strict"; -const { ipcRenderer } = require("electron"); +const { remote, ipcRenderer } = require("electron"); const { Pool } = require("pg"); +const executorId = require("uuid/v1")(); + +const connectionConfig = remote.getCurrentWindow().connectionConfig; + const connectionPool = new Pool({ - user: "postgres", - host: "localhost", + user: connectionConfig.username, + host: connectionConfig.host, database: "postgres", - password: "", - port: 5432 + password: connectionConfig.password, + port: connectionConfig.port }); -ipcRenderer.on("queryExecutor.runQuery", (event, payload) => { - - connectionPool.query(payload.query, (err, res) => { +// Initialisation completed +ipcRenderer.send("queryExecutor.initialiseConnectionCallback", executorId); - console.log(err, res) +ipcRenderer.on("queryExecutor.runQuery", (event, payload) => { - ipcRenderer.send("queryExecutor.runQueryComplete", { - "error": err, - "result": res, - "editorInstanceId": payload.editorInstanceId + if(payload.queryExecutorId === executorId) { + connectionPool.query(payload.query, (err, res) => { + + console.log(err, res) + + ipcRenderer.send("queryExecutor.runQueryComplete", { + "error": err, + "result": res, + "editorInstanceId": payload.editorInstanceId + }); + }); - - }); - + } + }); ipcRenderer.on("queryExecutor.queryTableMetadata", (event, payload) => { -- cgit v1.2.3 From 703f78867653ed9c53a745f9808eb96ae8a89dc7 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Wed, 21 Feb 2018 21:28:39 +0000 Subject: Ensure query error messages survive the IPC serialisaion --- query-executor.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'query-executor.js') diff --git a/query-executor.js b/query-executor.js index 0c5b440..88df7e1 100644 --- a/query-executor.js +++ b/query-executor.js @@ -23,8 +23,14 @@ ipcRenderer.on("queryExecutor.runQuery", (event, payload) => { if(payload.queryExecutorId === executorId) { connectionPool.query(payload.query, (err, res) => { - console.log(err, res) + console.log(err, res); + if(err !== undefined) { + // The IPC payload is serialised to JSON beofre transmisison, so the protoype chain is lost. + // So store the nicely formatted error message as a property. + err.cause = err.toString(); + } + ipcRenderer.send("queryExecutor.runQueryComplete", { "error": err, "result": res, -- cgit v1.2.3