diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts index 652592dd8..6b6c7b705 100644 --- a/packages/types/engines.d.ts +++ b/packages/types/engines.d.ts @@ -305,6 +305,7 @@ export interface EngineDriver extends FilterBehaviourProvider { command: 'backup' | 'restore' ): { message: string; severity: 'info' | 'error' | 'debug' } | null; getNativeOperationFormArgs(operation: 'backup' | 'restore'): any[]; + getAdvancedConnectionFields(): any[]; analyserClass?: any; dumperClass?: any; diff --git a/packages/web/src/settings/ConnectionAdvancedDriverFields.svelte b/packages/web/src/settings/ConnectionAdvancedDriverFields.svelte index eec4164e4..ddacf3375 100644 --- a/packages/web/src/settings/ConnectionAdvancedDriverFields.svelte +++ b/packages/web/src/settings/ConnectionAdvancedDriverFields.svelte @@ -1,13 +1,24 @@ + +{#if advancedFields} + +{/if} diff --git a/plugins/dbgate-plugin-redis/src/backend/driver.js b/plugins/dbgate-plugin-redis/src/backend/driver.js index 0ce950c9c..aab53f939 100644 --- a/plugins/dbgate-plugin-redis/src/backend/driver.js +++ b/plugins/dbgate-plugin-redis/src/backend/driver.js @@ -81,12 +81,25 @@ function splitCommandLine(str) { const driver = { ...driverBase, analyserClass: Analyser, - async connect({ server, port, user, password, database, useDatabaseUrl, databaseUrl, treeKeySeparator, ssl }) { + async connect({ + server, + port, + user, + password, + database, + useDatabaseUrl, + databaseUrl, + treeKeySeparator, + ssl, + skipSetName, + }) { let db = 0; let client; if (useDatabaseUrl) { client = new Redis(databaseUrl); - await client.client('SETNAME', 'dbgate'); + if (!skipSetName) { + await client.client('SETNAME', 'dbgate'); + } } else { if (_.isString(database) && database.startsWith('db')) db = parseInt(database.substring(2)); if (_.isNumber(database)) db = database; @@ -96,15 +109,18 @@ const driver = { passphrase: ssl.password, }; } - client = new Redis({ + const connectionOptions = { host: server, port, username: user, password, db, - connectionName: 'dbgate', tls: ssl, - }); + }; + if (!skipSetName) { + connectionOptions.connectionName = 'dbgate'; + } + client = new Redis(connectionOptions); } return { diff --git a/plugins/dbgate-plugin-redis/src/frontend/driver.js b/plugins/dbgate-plugin-redis/src/frontend/driver.js index e3bc599d0..d440ad2e7 100644 --- a/plugins/dbgate-plugin-redis/src/frontend/driver.js +++ b/plugins/dbgate-plugin-redis/src/frontend/driver.js @@ -82,6 +82,16 @@ const driver = { } return ['server', 'port', 'user', 'password', 'isReadOnly', 'treeKeySeparator'].includes(field); }, + + getAdvancedConnectionFields() { + return [ + { + type: 'checkbox', + name: 'skipSetName', + label: 'Skip SETNAME instruction', + }, + ]; + }, }; module.exports = driver;