1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.isPlainObject = exports.getOrder = exports.errorHandler = exports.ERROR = void 0;
|
4 | const errors_1 = require("@feathersjs/errors");
|
5 | exports.ERROR = Symbol('feathers-sequelize/error');
|
6 | const wrap = (error, original) => Object.assign(error, { [exports.ERROR]: original });
|
7 | const 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 |
|
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 | };
|
34 | exports.errorHandler = errorHandler;
|
35 | const 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 | }, []);
|
47 | exports.getOrder = getOrder;
|
48 | const isPlainObject = (obj) => {
|
49 | return obj && obj.constructor === {}.constructor;
|
50 | };
|
51 | exports.isPlainObject = isPlainObject;
|
52 |
|
\ | No newline at end of file |