From 4e1ee72d4d8e12a42e5e29015d3769a9526bfc35 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sun, 28 Jun 2020 15:33:59 +0200 Subject: [PATCH] kill query --- packages/api/src/controllers/sessions.js | 10 ++++++++++ packages/web/src/query/QueryToolbar.js | 5 ++++- packages/web/src/tabs/QueryTab.js | 9 +++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js index 1482e523a..cf0f9f014 100644 --- a/packages/api/src/controllers/sessions.js +++ b/packages/api/src/controllers/sessions.js @@ -105,6 +105,16 @@ module.exports = { return { state: 'ok' }; }, + kill_meta: 'post', + async kill({ sesid }) { + const session = this.opened.find((x) => x.sesid == sesid); + if (!session) { + throw new Error('Invalid session'); + } + session.subprocess.kill(); + return { state: 'ok' }; + }, + // runCommand_meta: 'post', // async runCommand({ conid, database, sql }) { // console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`); diff --git a/packages/web/src/query/QueryToolbar.js b/packages/web/src/query/QueryToolbar.js index 0aee8e781..1b8dcdbf6 100644 --- a/packages/web/src/query/QueryToolbar.js +++ b/packages/web/src/query/QueryToolbar.js @@ -1,7 +1,7 @@ import React from 'react'; import ToolbarButton from '../widgets/ToolbarButton'; -export default function QueryToolbar({ execute, cancel, isDatabaseDefined, busy, save, format }) { +export default function QueryToolbar({ execute, cancel, isDatabaseDefined, busy, save, format, isConnected, kill }) { return ( <> @@ -10,6 +10,9 @@ export default function QueryToolbar({ execute, cancel, isDatabaseDefined, busy, Cancel + + Kill + Save diff --git a/packages/web/src/tabs/QueryTab.js b/packages/web/src/tabs/QueryTab.js index 93a536391..16934219e 100644 --- a/packages/web/src/tabs/QueryTab.js +++ b/packages/web/src/tabs/QueryTab.js @@ -178,6 +178,13 @@ export default function QueryTab({ }); }; + const handleKill = () => { + axios.post('sessions/cancel', { + sesid: sessionId, + }); + setSessionId(null); + }; + const handleKeyDown = (data, hash, keyString, keyCode, event) => { if (keyCode == keycodes.f5) { event.preventDefault(); @@ -236,6 +243,8 @@ export default function QueryTab({ cancel={handleCancel} format={handleFormatCode} save={saveSqlFileModalState.open} + isConnected={!!sessionId} + kill={handleKill} />, toolbarPortalRef.current )}