2021-06-17 16:17:15 +02:00
|
|
|
'use strict';
|
|
|
|
|
2023-03-23 16:10:24 +01:00
|
|
|
/**
|
|
|
|
* Require our dialect-specific code
|
|
|
|
*/
|
2022-08-08 23:33:39 +02:00
|
|
|
const getDialectClass = (client) => {
|
2021-06-17 16:17:15 +02:00
|
|
|
switch (client) {
|
|
|
|
case 'postgres':
|
2021-09-13 16:14:33 +02:00
|
|
|
return require('./postgresql');
|
2021-06-24 18:28:36 +02:00
|
|
|
case 'mysql':
|
2021-09-13 16:14:33 +02:00
|
|
|
return require('./mysql');
|
2021-06-24 18:28:36 +02:00
|
|
|
case 'sqlite':
|
2021-09-13 16:14:33 +02:00
|
|
|
return require('./sqlite');
|
2021-06-17 16:17:15 +02:00
|
|
|
default:
|
2021-12-22 19:59:03 +05:30
|
|
|
throw new Error(`Unknown dialect ${client}`);
|
2021-06-17 16:17:15 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-03-23 16:10:24 +01:00
|
|
|
/**
|
|
|
|
* Get the dialect of a database client
|
|
|
|
*
|
|
|
|
* @param {string} The client value from a project database configuration
|
|
|
|
* @returns {string} The dialect of that client
|
|
|
|
*/
|
2023-03-22 12:11:15 +01:00
|
|
|
const getDialectName = (client) => {
|
|
|
|
switch (client) {
|
|
|
|
case 'postgres':
|
|
|
|
return 'postgres';
|
|
|
|
case 'mysql':
|
|
|
|
case 'mysql2':
|
|
|
|
return 'mysql';
|
|
|
|
case 'sqlite':
|
2023-03-23 14:25:47 +01:00
|
|
|
case 'sqlite-legacy':
|
2023-03-22 12:11:15 +01:00
|
|
|
return 'sqlite';
|
|
|
|
default:
|
|
|
|
throw new Error(`Unknown dialect ${client}`);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-08-08 23:33:39 +02:00
|
|
|
const getDialect = (db) => {
|
2021-07-28 21:03:32 +02:00
|
|
|
const { client } = db.config.connection;
|
2023-03-22 12:11:15 +01:00
|
|
|
const dialectName = getDialectName(client);
|
2021-07-28 21:03:32 +02:00
|
|
|
|
2023-03-22 12:11:15 +01:00
|
|
|
const constructor = getDialectClass(dialectName);
|
2021-09-13 16:14:33 +02:00
|
|
|
const dialect = new constructor(db);
|
2023-03-22 12:11:15 +01:00
|
|
|
dialect.client = dialectName;
|
2021-07-28 21:03:32 +02:00
|
|
|
|
|
|
|
return dialect;
|
|
|
|
};
|
|
|
|
|
2021-06-17 16:17:15 +02:00
|
|
|
module.exports = {
|
|
|
|
getDialect,
|
|
|
|
};
|