From ae8e46e02448734713a2db558839074b4a2dcccf Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 10 Feb 2025 11:26:57 +0100 Subject: [PATCH] refactor SQL --- .../api/src/controllers/databaseConnections.js | 16 +++++++++++++++- packages/api/src/utility/authProxy.js | 5 +++++ packages/web/src/tabs/QueryTab.svelte | 10 ++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 9211d6821..57b794c11 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -35,7 +35,7 @@ const crypto = require('crypto'); const loadModelTransform = require('../utility/loadModelTransform'); const exportDbModelSql = require('../utility/exportDbModelSql'); const axios = require('axios'); -const { callTextToSqlApi, callCompleteOnCursorApi } = require('../utility/authProxy'); +const { callTextToSqlApi, callCompleteOnCursorApi, callRefactorSqlQueryApi } = require('../utility/authProxy'); const logger = getLogger('databaseConnections'); @@ -593,4 +593,18 @@ module.exports = { return res; }, + + refactorSqlQuery_meta: true, + async refactorSqlQuery({ conid, database, query, task, dialect }) { + const existing = this.opened.find(x => x.conid == conid && x.database == database); + const { structure } = existing || {}; + if (!structure) return { errorMessage: 'No database structure' }; + const res = await callRefactorSqlQueryApi(query, task, structure, dialect); + + if (!res?.sql) { + return { errorMessage: 'No SQL generated' }; + } + + return res; + }, }; diff --git a/packages/api/src/utility/authProxy.js b/packages/api/src/utility/authProxy.js index f6122c916..0d998fec2 100644 --- a/packages/api/src/utility/authProxy.js +++ b/packages/api/src/utility/authProxy.js @@ -32,6 +32,10 @@ async function callCompleteOnCursorApi(cursorId, query, position, dialect) { return null; } +async function callRefactorSqlQueryApi(query, task, structure, dialect) { + return null; +} + module.exports = { isAuthProxySupported, authProxyGetRedirectUrl, @@ -42,4 +46,5 @@ module.exports = { getAwsIamToken, callTextToSqlApi, callCompleteOnCursorApi, + callRefactorSqlQueryApi, }; diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index c6f920531..9992e3fc8 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -526,6 +526,16 @@ editor.session.insert(editor.getCursorPosition(), text); domEditor?.getEditor()?.focus(); }} + getTextOrSelectedText={() => domEditor.getEditor().getSelectedText() || $editorValue} + onSetSelectedText={text => { + const editor = domEditor.getEditor(); + if (editor.getSelectedText()) { + const range = editor.selection.getRange(); + editor.session.replace(range, text); + } else { + editor.setValue(text); + } + }} />