2022-05-01 15:02:44 -04:00
|
|
|
const { resolveClientNameWithAliases } = require('../util/helpers')
|
2022-04-22 11:02:26 -04:00
|
|
|
|
2022-05-01 15:02:44 -04:00
|
|
|
const dbNameToDialectLoader: Record<string, () => any> = Object.freeze({
|
2022-04-22 11:02:26 -04:00
|
|
|
'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'),
|
2022-05-01 15:02:44 -04:00
|
|
|
})
|
2022-04-22 11:02:26 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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.
|
|
|
|
*/
|
2022-05-01 15:02:44 -04:00
|
|
|
export function getDialectByNameOrAlias(clientName: string) {
|
|
|
|
const resolvedClientName = resolveClientNameWithAliases(clientName)
|
|
|
|
const dialectLoader = dbNameToDialectLoader[resolvedClientName]
|
2022-04-22 11:02:26 -04:00
|
|
|
if (!dialectLoader) {
|
2022-05-01 15:02:44 -04:00
|
|
|
throw new Error(`Invalid clientName given: ${clientName}`)
|
2022-04-22 11:02:26 -04:00
|
|
|
}
|
|
|
|
return dialectLoader();
|
|
|
|
}
|