mirror of
https://github.com/knex/knex.git
synced 2025-06-26 22:00:25 +00:00
Added getDialectByNameOrAlias and converted repo to use it. (#5142)
This commit is contained in:
parent
2511e74f57
commit
4e6a54735d
35
lib/dialects/index.js
Normal file
35
lib/dialects/index.js
Normal file
@ -0,0 +1,35 @@
|
||||
const { resolveClientNameWithAliases } = require('../util/helpers');
|
||||
|
||||
const dbNameToDialectLoader = Object.freeze({
|
||||
'better-sqlite3': () => require('./better-sqlite3'),
|
||||
cockroachdb: () => require('./cockroachdb'),
|
||||
mssql: () => require('./mssql'),
|
||||
mysql: () => require('./mysql'),
|
||||
mysql2: () => require('./mysql2'),
|
||||
oracle: () => require('./oracle'),
|
||||
oracledb: () => require('./oracledb'),
|
||||
pgnative: () => require('./pgnative'),
|
||||
postgres: () => require('./postgres'),
|
||||
redshift: () => require('./redshift'),
|
||||
sqlite3: () => require('./sqlite3'),
|
||||
});
|
||||
|
||||
/**
|
||||
* Gets the Dialect object with the given client name or throw an
|
||||
* error if not found.
|
||||
*
|
||||
* NOTE: This is a replacement for prior practice of doing dynamic
|
||||
* string construction for imports of Dialect objects.
|
||||
*/
|
||||
function getDialectByNameOrAlias(clientName) {
|
||||
const resolvedClientName = resolveClientNameWithAliases(clientName);
|
||||
const dialectLoader = dbNameToDialectLoader[resolvedClientName];
|
||||
if (!dialectLoader) {
|
||||
throw new Error(`Invalid clientName given: ${clientName}`);
|
||||
}
|
||||
return dialectLoader();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getDialectByNameOrAlias,
|
||||
};
|
@ -2,7 +2,7 @@ const Client = require('../../client');
|
||||
const { SUPPORTED_CLIENTS } = require('../../constants');
|
||||
|
||||
const parseConnection = require('./parse-connection');
|
||||
const { resolveClientNameWithAliases } = require('../../util/helpers');
|
||||
const { getDialectByNameOrAlias } = require('../../dialects');
|
||||
|
||||
function resolveConfig(config) {
|
||||
let Dialect;
|
||||
@ -34,8 +34,7 @@ function resolveConfig(config) {
|
||||
);
|
||||
}
|
||||
|
||||
const resolvedClientName = resolveClientNameWithAliases(clientName);
|
||||
Dialect = require(`../../dialects/${resolvedClientName}/index.js`);
|
||||
Dialect = getDialectByNameOrAlias(clientName);
|
||||
}
|
||||
|
||||
// If config connection parameter is passed as string, try to parse it
|
||||
|
Loading…
x
Reference in New Issue
Block a user