diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts index c7a5545fe..ab60bb2e6 100644 --- a/packages/types/engines.d.ts +++ b/packages/types/engines.d.ts @@ -47,6 +47,7 @@ export interface EngineDriver { title: string; defaultPort?: number; databaseEngineTypes: string[]; + supportedKeyTypes: { name: string; label: string }[]; supportsDatabaseUrl?: boolean; isElectronOnly?: boolean; showConnectionField?: (field: string, values: any) => boolean; diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 454a59704..b464a5c57 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -4,6 +4,7 @@ import { get } from 'svelte/store'; import { ThemeDefinition } from 'dbgate-types'; import ConnectionModal from '../modals/ConnectionModal.svelte'; import AboutModal from '../modals/AboutModal.svelte'; +import AddDbKeyModal from '../modals/AddDbKeyModal.svelte'; import SettingsModal from '../settings/SettingsModal.svelte'; import ImportExportModal from '../modals/ImportExportModal.svelte'; import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte'; @@ -217,6 +218,30 @@ registerCommand({ }, }); +registerCommand({ + id: 'new.dbKey', + category: 'New', + name: 'Key', + toolbar: true, + toolbarName: 'New key', + testEnabled: () => { + const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions()); + return !!get(currentDatabase) && driver?.databaseEngineTypes?.includes('keyvalue'); + }, + onClick: async () => { + const $currentDatabase = get(currentDatabase); + const connection = _.get($currentDatabase, 'connection') || {}; + const database = _.get($currentDatabase, 'name'); + const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions()); + + showModal(AddDbKeyModal, { + conid: connection._id, + database, + driver, + }); + }, +}); + registerCommand({ id: 'new.markdown', category: 'New', diff --git a/packages/web/src/datagrid/DbKeyTableControl.svelte b/packages/web/src/datagrid/DbKeyTableControl.svelte index f5e2d6497..22c32f16c 100644 --- a/packages/web/src/datagrid/DbKeyTableControl.svelte +++ b/packages/web/src/datagrid/DbKeyTableControl.svelte @@ -19,6 +19,9 @@ const oldIndexRef = createRef(null); async function loadNextRows() { + if (isLoadedAll) { + return; + } if (isLoading) { // console.log('ALREADY LOADING'); loadNextNeeded = true; @@ -79,7 +82,7 @@ header: 'num', width: '60px', }, - ...keyInfo.tableColumns.map(column => ({ + ...keyInfo.keyType.dbKeyFields.map(column => ({ fieldName: column.name, header: column.name, })), diff --git a/packages/web/src/dbkeyvalue/DbKeyItemDetail.svelte b/packages/web/src/dbkeyvalue/DbKeyItemDetail.svelte index 77bcdd446..1b6174d05 100644 --- a/packages/web/src/dbkeyvalue/DbKeyItemDetail.svelte +++ b/packages/web/src/dbkeyvalue/DbKeyItemDetail.svelte @@ -1,13 +1,13 @@