2021-03-08 07:16:07 -05:00
|
|
|
const { get } = require('lodash');
|
|
|
|
const { DRIVER_NAMES: drivers } = require('../../lib/constants');
|
|
|
|
|
|
|
|
function getDriverName(knex) {
|
|
|
|
return get(knex, 'client.driverName', '');
|
|
|
|
}
|
|
|
|
|
2020-12-27 15:19:47 +02:00
|
|
|
function isPostgreSQL(knex) {
|
2021-09-06 09:04:23 -04:00
|
|
|
return isOneOfDbs(knex, [drivers.PostgreSQL, drivers.PgNative]);
|
|
|
|
}
|
|
|
|
|
|
|
|
function isPgNative(knex) {
|
|
|
|
return getDriverName(knex) === drivers.PgNative;
|
2021-03-08 07:16:07 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
function isPgBased(knex) {
|
2021-09-06 09:04:23 -04:00
|
|
|
return isOneOfDbs(knex, [
|
|
|
|
drivers.PostgreSQL,
|
|
|
|
drivers.PgNative,
|
|
|
|
drivers.Redshift,
|
2021-10-02 23:45:17 +03:00
|
|
|
drivers.CockroachDB,
|
2021-09-06 09:04:23 -04:00
|
|
|
]);
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
2021-10-02 23:45:17 +03:00
|
|
|
function isPgBasedDriverName(driverName) {
|
|
|
|
return [
|
|
|
|
drivers.PostgreSQL,
|
|
|
|
drivers.PgNative,
|
|
|
|
drivers.Redshift,
|
|
|
|
drivers.CockroachDB,
|
|
|
|
].includes(driverName);
|
|
|
|
}
|
|
|
|
|
|
|
|
function isPgDriverName(driverName) {
|
|
|
|
return [drivers.PostgreSQL, drivers.PgNative].includes(driverName);
|
|
|
|
}
|
|
|
|
|
2020-12-30 16:13:35 +00:00
|
|
|
function isMssql(knex) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return getDriverName(knex) === drivers.MsSQL;
|
2020-12-30 16:13:35 +00:00
|
|
|
}
|
|
|
|
|
2020-12-27 15:19:47 +02:00
|
|
|
function isOracle(knex) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return getDriverName(knex) === drivers.Oracle;
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function isMysql(knex) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return isOneOfDbs(knex, [drivers.MySQL, drivers.MySQL2]);
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function isRedshift(knex) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return getDriverName(knex) === drivers.Redshift;
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function isSQLite(knex) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return getDriverName(knex) === drivers.SQLite;
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
2021-10-02 23:45:17 +03:00
|
|
|
function isCockroachDB(knex) {
|
|
|
|
return getDriverName(knex) === drivers.CockroachDB;
|
|
|
|
}
|
|
|
|
|
2020-12-27 15:19:47 +02:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param knex
|
2021-10-02 23:45:17 +03:00
|
|
|
* @param {('pg'|'pgnative'|'pg-redshift'|'oracledb'|'mysql'|'mysql2'|'mssql'|'sqlite3'|'cockroachdb')[]} supportedDbs - supported DB values in DRIVER_NAMES from lib/constants.
|
2020-12-27 15:19:47 +02:00
|
|
|
* @returns {*}
|
|
|
|
*/
|
|
|
|
function isOneOfDbs(knex, supportedDbs) {
|
2021-03-08 07:16:07 -05:00
|
|
|
return supportedDbs.includes(getDriverName(knex));
|
2020-12-27 15:19:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
isOneOfDbs,
|
2021-10-02 23:45:17 +03:00
|
|
|
isCockroachDB,
|
2020-12-27 15:19:47 +02:00
|
|
|
isMysql,
|
2020-12-30 16:13:35 +00:00
|
|
|
isMssql,
|
2020-12-27 15:19:47 +02:00
|
|
|
isOracle,
|
|
|
|
isPostgreSQL,
|
2021-09-06 09:04:23 -04:00
|
|
|
isPgNative,
|
2021-10-02 23:45:17 +03:00
|
|
|
isPgDriverName,
|
2021-03-08 07:16:07 -05:00
|
|
|
isPgBased,
|
2021-10-02 23:45:17 +03:00
|
|
|
isPgBasedDriverName,
|
2020-12-27 15:19:47 +02:00
|
|
|
isRedshift,
|
|
|
|
isSQLite,
|
|
|
|
};
|