mirror of
https://github.com/strapi/strapi.git
synced 2025-07-20 07:27:06 +00:00
74 lines
1.2 KiB
JavaScript
74 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const errors = require('../errors');
|
|
|
|
class Dialect {
|
|
useReturning() {
|
|
return false;
|
|
}
|
|
|
|
processResult(r) {
|
|
return r;
|
|
}
|
|
|
|
// TODO: pass query info to display some more metadata
|
|
transformErrors(error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
class PostgresDialect extends Dialect {
|
|
useReturning() {
|
|
return true;
|
|
}
|
|
|
|
transformErrors(error) {
|
|
switch (error.code) {
|
|
case '23502': {
|
|
throw new errors.NotNullConstraint({ column: error.column });
|
|
}
|
|
default: {
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
class MysqlDialect extends Dialect {
|
|
transformErrors(error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
class SqliteDialect extends Dialect {
|
|
transformErrors(error) {
|
|
switch (error.errno) {
|
|
case 19: {
|
|
throw new errors.NotNullConstraint();
|
|
}
|
|
default: {
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const getDialect = connection => {
|
|
const { client } = connection.client.config;
|
|
|
|
switch (client) {
|
|
case 'postgres':
|
|
return new PostgresDialect();
|
|
case 'mysql':
|
|
return new MysqlDialect();
|
|
case 'sqlite':
|
|
return new SqliteDialect();
|
|
default:
|
|
return new Dialect();
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
getDialect,
|
|
};
|