diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js index fb86362d5..cf9147eeb 100644 --- a/packages/api/src/controllers/connections.js +++ b/packages/api/src/controllers/connections.js @@ -240,6 +240,7 @@ module.exports = { get_meta: true, async get({ conid }) { + if (!conid) return null; if (portalConnections) return portalConnections.find(x => x._id == conid) || null; const res = await this.datastore.get(conid); return res || null; diff --git a/packages/api/src/shell/tableReader.js b/packages/api/src/shell/tableReader.js index 46e7fe168..c0824ee62 100644 --- a/packages/api/src/shell/tableReader.js +++ b/packages/api/src/shell/tableReader.js @@ -9,7 +9,7 @@ async function tableReader({ connection, pureName, schemaName }) { const fullName = { pureName, schemaName }; - if (driver.dialect.nosql) { + if (driver.databaseEngineTypes.includes('document')) { // @ts-ignore console.log(`Reading collection ${fullNameToString(fullName)}`); // @ts-ignore diff --git a/packages/tools/src/createBulkInsertStreamBase.ts b/packages/tools/src/createBulkInsertStreamBase.ts index 37d0f6c5a..01f8b1b2a 100644 --- a/packages/tools/src/createBulkInsertStreamBase.ts +++ b/packages/tools/src/createBulkInsertStreamBase.ts @@ -14,7 +14,7 @@ export function createBulkInsertStreamBase(driver, stream, pool, name, options): writable.buffer = []; writable.structure = null; writable.columnNames = null; - writable.requireFixedStructure = !driver.dialect.nosql; + writable.requireFixedStructure = driver.databaseEngineTypes.includes('sql'); writable.addRow = async row => { if (writable.structure) { diff --git a/packages/tools/src/driverBase.ts b/packages/tools/src/driverBase.ts index b4e9dc986..6618ec48b 100644 --- a/packages/tools/src/driverBase.ts +++ b/packages/tools/src/driverBase.ts @@ -20,6 +20,7 @@ export const driverBase = { analyserClass: null, dumperClass: SqlDumper, dialect, + databaseEngineTypes: ['sql'], async analyseFull(pool, version) { const analyser = new this.analyserClass(pool, this, version); @@ -45,7 +46,7 @@ export const driverBase = { } }, getNewObjectTemplates() { - if (!this.dialect?.nosql) { + if (this.databaseEngineTypes.includes('sql')) { return [{ label: 'New view', sql: 'CREATE VIEW myview\nAS\nSELECT * FROM table1' }]; } return []; diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts index f05dc0528..71f496d09 100644 --- a/packages/types/dialect.d.ts +++ b/packages/types/dialect.d.ts @@ -10,7 +10,6 @@ export interface SqlDialect { explicitDropConstraint?: boolean; anonymousPrimaryKey?: boolean; enableConstraintsPerTable?: boolean; - nosql?: boolean; // mongo dropColumnDependencies?: string[]; changeColumnDependencies?: string[]; diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts index 2f1d2719d..315040622 100644 --- a/packages/types/engines.d.ts +++ b/packages/types/engines.d.ts @@ -46,6 +46,7 @@ export interface EngineDriver { engine: string; title: string; defaultPort?: number; + databaseEngineTypes: string[]; supportsDatabaseUrl?: boolean; isElectronOnly?: boolean; showConnectionField?: (field: string, values: any) => boolean; diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 2ed204b75..78e86a980 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -174,8 +174,8 @@ return [ { onClick: handleNewQuery, text: 'New query', isNewQuery: true }, - !driver?.dialect?.nosql && { onClick: handleNewTable, text: 'New table' }, - driver?.dialect?.nosql && { onClick: handleNewCollection, text: 'New collection' }, + driver?.databaseEngineTypes?.includes('sql') && { onClick: handleNewTable, text: 'New table' }, + driver?.databaseEngineTypes?.includes('document') && { onClick: handleNewCollection, text: 'New collection' }, { divider: true }, { onClick: handleImport, text: 'Import' }, { onClick: handleExport, text: 'Export' }, diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 46f28583c..143ea85d6 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -158,7 +158,7 @@ registerCommand({ toolbarName: 'New table', testEnabled: () => { const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions()); - return !!get(currentDatabase) && !driver?.dialect?.nosql; + return !!get(currentDatabase) && driver?.databaseEngineTypes?.includes('sql'); }, onClick: () => { const $currentDatabase = get(currentDatabase); @@ -196,7 +196,7 @@ registerCommand({ toolbarName: 'New collection', testEnabled: () => { const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions()); - return !!get(currentDatabase) && driver?.dialect?.nosql; + return !!get(currentDatabase) && driver?.databaseEngineTypes?.includes('document'); }, onClick: async () => { const $currentDatabase = get(currentDatabase); diff --git a/packages/web/src/datagrid/DataFilterControl.svelte b/packages/web/src/datagrid/DataFilterControl.svelte index 1afe66422..2f49ac426 100644 --- a/packages/web/src/datagrid/DataFilterControl.svelte +++ b/packages/web/src/datagrid/DataFilterControl.svelte @@ -266,7 +266,7 @@ class:isOk placeholder="Filter" /> - {#if conid && database && driver && !driver?.dialect?.nosql} + {#if conid && database && driver && driver?.databaseEngineTypes?.includes('sql')} {#if foreignKey} diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index 669f3d959..94f50a8b4 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -124,7 +124,7 @@ } export function isSqlEditor() { - return !driver?.dialect?.nosql; + return driver?.databaseEngineTypes?.includes('sql'); } export function canKill() { @@ -281,7 +281,7 @@ - {#if driver?.dialect?.nosql} + {#if driver?.databaseEngineTypes?.includes('document')}