diff --git a/packages/api/src/shell/executeQuery.js b/packages/api/src/shell/executeQuery.js index 3f54267f0..cdd8124e0 100644 --- a/packages/api/src/shell/executeQuery.js +++ b/packages/api/src/shell/executeQuery.js @@ -14,6 +14,7 @@ const logger = getLogger('execQuery'); * @param {string} [options.sql] - SQL query * @param {string} [options.sqlFile] - SQL file * @param {boolean} [options.logScriptItems] - whether to log script items instead of whole script + * @param {boolean} [options.skipLogging] - whether to skip logging */ async function executeQuery({ connection = undefined, @@ -22,8 +23,9 @@ async function executeQuery({ sql, sqlFile = undefined, logScriptItems = false, + skipLogging = false, }) { - if (!logScriptItems) { + if (!logScriptItems && !skipLogging) { logger.info({ sql: getLimitedQuery(sql) }, `Execute query`); } @@ -36,7 +38,9 @@ async function executeQuery({ } try { - logger.debug(`Running SQL query, length: ${sql.length}`); + if (!skipLogging) { + logger.debug(`Running SQL query, length: ${sql.length}`); + } await driver.script(dbhan, sql, { logScriptItems }); } finally { diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 28ac3c572..b9b9e11d1 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -330,6 +330,29 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify( }); }; + const handleGenerateRunScript = () => { + openNewTab( + { + title: 'Shell #', + icon: 'img shell', + tabComponent: 'ShellTab', + }, + { + editor: `// @require ${extractPackageName(connection.engine)} + +await dbgateApi.executeQuery(${JSON.stringify( + { + connection: extractShellConnection(connection, name), + sql: 'your script here', + }, + undefined, + 2 + )}); +`, + } + ); + }; + const handleShowDataDeployer = () => { showModal(ChooseArchiveFolderModal, { message: 'Choose archive folder for data deployer', @@ -439,6 +462,11 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify( text: 'Shell: Drop all objects', }, + { + onClick: handleGenerateRunScript, + text: 'Shell: Run script', + }, + driver?.databaseEngineTypes?.includes('sql') && hasPermission(`dbops/import`) && { onClick: handleShowDataDeployer,