Browse Source

feat: support custom parameters on connection url

Re #3210

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/3306/head
mertmit 2 years ago
parent
commit
bb15901c83
  1. 75
      packages/nocodb/src/lib/utils/NcConfigFactory.ts

75
packages/nocodb/src/lib/utils/NcConfigFactory.ts

@ -39,6 +39,45 @@ const defaultConnectionConfig: any = {
dateStrings: true,
};
const knownQueryParams = [
{
parameter: 'database',
aliases: ['d', 'db'],
},
{
parameter: 'password',
aliases: ['p'],
},
{
parameter: 'user',
aliases: ['u'],
},
{
parameter: 'title',
aliases: ['t'],
},
{
parameter: 'keyFilePath',
aliases: []
},
{
parameter: 'certFilePath',
aliases: []
},
{
parameter: 'caFilePath',
aliases: []
},
{
parameter: 'ssl',
aliases: []
},
{
parameter: 'options',
aliases: ['opt', 'opts']
},
];
export default class NcConfigFactory implements NcConfig {
public static make(): NcConfig {
this.jdbcToXcUrl();
@ -155,17 +194,21 @@ export default class NcConfigFactory implements NcConfig {
},
} as any;
} else {
const parsedQuery = {}
for (const [key, value] of url.searchParams.entries()) {
const fnd = knownQueryParams.find((param) => param.parameter === key || param.aliases.includes(key))
if (fnd) {
parsedQuery[fnd.parameter] = value;
} else {
parsedQuery[key] = value;
}
}
dbConfig = {
client: url.protocol.replace(':', ''),
connection: {
...defaultConnectionConfig,
database:
url.searchParams.get('d') || url.searchParams.get('database'),
host: url.hostname,
password:
url.searchParams.get('p') || url.searchParams.get('password'),
port: +url.port,
user: url.searchParams.get('u') || url.searchParams.get('user'),
...parsedQuery
},
// pool: {
// min: 1,
@ -259,17 +302,21 @@ export default class NcConfigFactory implements NcConfig {
: {}),
};
} else {
const parsedQuery = {}
for (const [key, value] of url.searchParams.entries()) {
const fnd = knownQueryParams.find((param) => param.parameter === key || param.aliases.includes(key))
if (fnd) {
parsedQuery[fnd.parameter] = value;
} else {
parsedQuery[key] = value;
}
}
dbConfig = {
client: url.protocol.replace(':', ''),
connection: {
...defaultConnectionConfig,
database:
url.searchParams.get('d') || url.searchParams.get('database'),
host: url.hostname,
password:
url.searchParams.get('p') || url.searchParams.get('password'),
port: +url.port,
user: url.searchParams.get('u') || url.searchParams.get('user'),
...parsedQuery
},
acquireConnectionTimeout: 600000,
...(url.searchParams.has('search_path')

Loading…
Cancel
Save