diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index fba48176c..4f9cec01b 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -229,6 +229,30 @@ }); }; + const handleQueryDesigner = () => { + openNewTab({ + title: 'Query #', + icon: 'img query-design', + tabComponent: 'QueryDesignTab', + props: { + conid: connection._id, + database: name, + }, + }); + }; + + const handleNewPerspective = () => { + openNewTab({ + title: 'Perspective #', + icon: 'img perspective', + tabComponent: 'PerspectiveTab', + props: { + conid: connection._id, + database: name, + }, + }); + }; + async function handleConfirmSql(sql) { saveScriptToDatabase({ conid: connection._id, database: name }, sql, false); } @@ -244,16 +268,21 @@ { onClick: handleNewQuery, text: 'New query', isNewQuery: true }, driver?.databaseEngineTypes?.includes('sql') && { onClick: handleNewTable, text: 'New table' }, driver?.databaseEngineTypes?.includes('document') && { onClick: handleNewCollection, text: 'New collection' }, - isSqlOrDoc && - !connection.isReadOnly && - !connection.singleDatabase && { onClick: handleDropDatabase, text: 'Drop database' }, + driver?.databaseEngineTypes?.includes('sql') && { onClick: handleQueryDesigner, text: 'Design query' }, + driver?.databaseEngineTypes?.includes('sql') && { + onClick: handleNewPerspective, + text: 'Design perspective query', + }, { divider: true }, isSqlOrDoc && !connection.isReadOnly && { onClick: handleImport, text: 'Import wizard' }, isSqlOrDoc && { onClick: handleExport, text: 'Export wizard' }, driver?.databaseEngineTypes?.includes('sql') && { onClick: handleSqlRestore, text: 'Restore/import SQL dump' }, driver?.supportsDatabaseDump && { onClick: handleSqlDump, text: 'Backup/export SQL dump' }, + isSqlOrDoc && + !connection.isReadOnly && + !connection.singleDatabase && { onClick: handleDropDatabase, text: 'Drop database' }, { divider: true }, - isSqlOrDoc && { onClick: handleShowDiagram, text: 'Show diagram' }, + driver?.databaseEngineTypes?.includes('sql') && { onClick: handleShowDiagram, text: 'Show diagram' }, isSqlOrDoc && { onClick: handleSqlGenerator, text: 'SQL Generator' }, isSqlOrDoc && { onClick: handleOpenJsonModel, text: 'Open model as JSON' }, isSqlOrDoc && { onClick: handleExportModel, text: 'Export DB model - experimental' }, diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index a6cceab66..d5d0fac83 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -52,7 +52,12 @@ icon: 'img table-structure', }, { - label: 'Open perspective', + label: 'Design query', + isQueryDesigner: true, + requiresWriteAccess: true, + }, + { + label: 'Design perspective query', tab: 'PerspectiveTab', forceNewTab: true, icon: 'img perspective', @@ -80,11 +85,6 @@ isDuplicateTable: true, requiresWriteAccess: true, }, - { - label: 'Query designer', - isQueryDesigner: true, - requiresWriteAccess: true, - }, { label: 'Show diagram', isDiagram: true, @@ -155,7 +155,11 @@ icon: 'img view-structure', }, { - label: 'Open perspective', + label: 'Design query', + isQueryDesigner: true, + }, + { + label: 'Design perspective query', tab: 'PerspectiveTab', forceNewTab: true, icon: 'img perspective', @@ -164,10 +168,6 @@ label: 'Drop view', isDrop: true, }, - { - label: 'Query designer', - isQueryDesigner: true, - }, { divider: true, },