more flexible connection dialog, improved UX when connecting to redshift

This commit is contained in:
Jan Prochazka
2021-05-16 11:22:48 +02:00
parent 6d7cc7d441
commit 8bffa4a7dd
10 changed files with 201 additions and 102 deletions

View File

@@ -15,11 +15,17 @@ const dialect = {
stringAgg: true,
};
/** @type {import('dbgate-types').EngineDriver} */
const postgresDriver = {
const postgresDriverBase = {
...driverBase,
dumperClass: Dumper,
dialect,
showConnectionField: (field, values) =>
['server', 'port', 'user', 'password', 'defaultDatabase', 'singleDatabase'].includes(field),
};
/** @type {import('dbgate-types').EngineDriver} */
const postgresDriver = {
...postgresDriverBase,
engine: 'postgres@dbgate-plugin-postgres',
title: 'Postgre SQL',
defaultPort: 5432,
@@ -27,9 +33,7 @@ const postgresDriver = {
/** @type {import('dbgate-types').EngineDriver} */
const cockroachDriver = {
...driverBase,
dumperClass: Dumper,
dialect,
...postgresDriverBase,
engine: 'cockroach@dbgate-plugin-postgres',
title: 'CockroachDB',
defaultPort: 26257,
@@ -37,15 +41,30 @@ const cockroachDriver = {
/** @type {import('dbgate-types').EngineDriver} */
const redshiftDriver = {
...driverBase,
dumperClass: Dumper,
...postgresDriverBase,
dialect: {
...dialect,
stringAgg: false,
},
engine: 'red@dbgate-plugin-postgres',
engine: 'redshift@dbgate-plugin-postgres',
title: 'Amazon Redshift',
defaultPort: 5439,
showConnectionField: (field, values) => ['databaseUrl', 'user', 'password'].includes(field),
beforeConnectionSave: connection => {
const { databaseUrl } = connection;
if (databaseUrl) {
const m = databaseUrl.match(/\/([^/]+)$/);
if (m) {
return {
...connection,
singleDatabase: true,
defaultDatabase: m[1],
// displayName: connection.displayName || `${m[1]} on Amazon Redshift`,
};
}
}
return connection;
},
};
module.exports = [postgresDriver, cockroachDriver, redshiftDriver];