UNPKG

2.24 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.isPlainObject = exports.getOrder = exports.errorHandler = exports.ERROR = void 0;
4const errors_1 = require("@feathersjs/errors");
5exports.ERROR = Symbol('feathers-sequelize/error');
6const wrap = (error, original) => Object.assign(error, { [exports.ERROR]: original });
7const errorHandler = (error) => {
8 const { name, message } = error;
9 if (name.startsWith('Sequelize')) {
10 switch (name) {
11 case 'SequelizeValidationError':
12 case 'SequelizeUniqueConstraintError':
13 case 'SequelizeExclusionConstraintError':
14 case 'SequelizeForeignKeyConstraintError':
15 case 'SequelizeInvalidConnectionError':
16 // @ts-ignore
17 throw wrap(new errors_1.BadRequest(message, { errors: error.errors }), error);
18 case 'SequelizeTimeoutError':
19 case 'SequelizeConnectionTimedOutError':
20 throw wrap(new errors_1.Timeout(message), error);
21 case 'SequelizeConnectionRefusedError':
22 case 'SequelizeAccessDeniedError':
23 throw wrap(new errors_1.Forbidden(message), error);
24 case 'SequelizeHostNotReachableError':
25 throw wrap(new errors_1.Unavailable(message), error);
26 case 'SequelizeHostNotFoundError':
27 throw wrap(new errors_1.NotFound(message), error);
28 default:
29 throw wrap(new errors_1.GeneralError(message), error);
30 }
31 }
32 throw error;
33};
34exports.errorHandler = errorHandler;
35const getOrder = (sort = {}) => Object.keys(sort).reduce((order, name) => {
36 let direction;
37 if (Array.isArray(sort[name])) {
38 direction = parseInt(sort[name][0], 10) === 1 ? 'ASC' : 'DESC';
39 direction += parseInt(sort[name][1], 10) === 1 ? ' NULLS FIRST' : ' NULLS LAST';
40 }
41 else {
42 direction = parseInt(sort[name], 10) === 1 ? 'ASC' : 'DESC';
43 }
44 order.push([name, direction]);
45 return order;
46}, []);
47exports.getOrder = getOrder;
48const isPlainObject = (obj) => {
49 return obj && obj.constructor === {}.constructor;
50};
51exports.isPlainObject = isPlainObject;
52//# sourceMappingURL=utils.js.map
\No newline at end of file