mirror of
https://github.com/strapi/strapi.git
synced 2025-07-21 07:57:45 +00:00
54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Require our dialect-specific code
|
|
*/
|
|
const getDialectClass = (client) => {
|
|
switch (client) {
|
|
case 'postgres':
|
|
return require('./postgresql');
|
|
case 'mysql':
|
|
return require('./mysql');
|
|
case 'sqlite':
|
|
return require('./sqlite');
|
|
default:
|
|
throw new Error(`Unknown dialect ${client}`);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Get the dialect of a database client
|
|
*
|
|
* @param {string} The client value from a project database configuration
|
|
* @returns {string} The dialect of that client
|
|
*/
|
|
const getDialectName = (client) => {
|
|
switch (client) {
|
|
case 'postgres':
|
|
return 'postgres';
|
|
case 'mysql':
|
|
case 'mysql2':
|
|
return 'mysql';
|
|
case 'sqlite':
|
|
case 'sqlite-legacy':
|
|
return 'sqlite';
|
|
default:
|
|
throw new Error(`Unknown dialect ${client}`);
|
|
}
|
|
};
|
|
|
|
const getDialect = (db) => {
|
|
const { client } = db.config.connection;
|
|
const dialectName = getDialectName(client);
|
|
|
|
const constructor = getDialectClass(dialectName);
|
|
const dialect = new constructor(db);
|
|
dialect.client = dialectName;
|
|
|
|
return dialect;
|
|
};
|
|
|
|
module.exports = {
|
|
getDialect,
|
|
};
|