From 16dda810d77c68b616b3185fd8d4b954815966ae Mon Sep 17 00:00:00 2001 From: sergeyteleshev Date: Thu, 23 Jul 2026 16:30:47 +0200 Subject: [PATCH] dbeaver/pro#9171 adds ability to open sql editor with context from Generate SQL dialog (#4488) Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com> --- .../DataGridContextMenuGenerateSqlService.ts | 6 ++++-- .../src/SqlGenerators/GeneratedSqlDialog.tsx | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuGenerateSqlService.ts b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuGenerateSqlService.ts index 26a6c731d1..cbc0cf97c3 100644 --- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuGenerateSqlService.ts +++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridContextMenu/DataGridContextMenuGenerateSqlService.ts @@ -121,6 +121,8 @@ export class DataGridContextMenuGenerateSqlService { return; } + const options = model.source.options as IDataContainerOptions | undefined; + const nodePath = options?.containerNodePath; const select = model.source.tryGetAction(resultIndex, IDatabaseDataSelectAction, GridSelectAction); const projectId = model.source.executionContext?.context?.projectId; const connectionId = model.source.executionContext?.context?.connectionId; @@ -162,7 +164,7 @@ export class DataGridContextMenuGenerateSqlService { await this.commonDialogService.open(GeneratedSqlDialog, { query, - nodeId: connectionId, + nodeId: nodePath ?? connectionId, options: getDefaultQueryGeneratorOptions(), regenerateQuery: options => this.generateQuery({ @@ -215,7 +217,7 @@ export class DataGridContextMenuGenerateSqlService { await this.commonDialogService.open(GeneratedSqlDialog, { query, - nodeId: connectionId, + nodeId: nodePathList, options: getDefaultQueryGeneratorOptions(), regenerateQuery: genOptions => this.sqlGenerationResource.generateEntityQuery(createGenerator.id, nodePathList, genOptions), }); diff --git a/webapp/packages/plugin-sql-generator/src/SqlGenerators/GeneratedSqlDialog.tsx b/webapp/packages/plugin-sql-generator/src/SqlGenerators/GeneratedSqlDialog.tsx index 607bb7b3c1..72fd627022 100644 --- a/webapp/packages/plugin-sql-generator/src/SqlGenerators/GeneratedSqlDialog.tsx +++ b/webapp/packages/plugin-sql-generator/src/SqlGenerators/GeneratedSqlDialog.tsx @@ -23,6 +23,7 @@ import { import { ConnectionDialectResource, ConnectionInfoResource, createConnectionParam } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; import type { DialogComponentProps } from '@cloudbeaver/core-dialogs'; +import { NavNodeManagerService } from '@cloudbeaver/core-navigation-tree'; import { useCodemirrorExtensions } from '@cloudbeaver/plugin-codemirror6'; import { SqlEditorNavigatorService } from '@cloudbeaver/plugin-sql-editor-navigation-tab'; import { SQLCodeEditor, useSqlDialectExtension } from '@cloudbeaver/plugin-sql-editor-codemirror'; @@ -80,6 +81,7 @@ export const GeneratedSqlDialog = observer>(functi const connectionInfoResource = useService(ConnectionInfoResource); const sqlEditorNavigatorService = useService(SqlEditorNavigatorService); + const navNodeManagerService = useService(NavNodeManagerService); const connection = connectionInfoResource.getConnectionForNode(payload.nodeId); const connectionDialectResource = useResource(GeneratedSqlDialog, ConnectionDialectResource, connection ? createConnectionParam(connection) : null); @@ -94,8 +96,12 @@ export const GeneratedSqlDialog = observer>(functi async function handleOpenInEditor() { try { + const container = navNodeManagerService.getNodeContainerInfo(payload.nodeId); + await sqlEditorNavigatorService.openNewEditor({ connectionKey: connection ? createConnectionParam(connection) : undefined, + catalogId: container.catalogId, + schemaId: container.schemaId, query: state.query, }); rejectDialog();