47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
|
|
require('dotenv').config();
|
||
|
|
|
||
|
|
const util = require('util');
|
||
|
|
const graphql = require('apollo-server-express');
|
||
|
|
const sequelize = require('sequelize');
|
||
|
|
|
||
|
|
util.inspect.defaultOptions.depth = null;
|
||
|
|
|
||
|
|
exports.formatError = (error, options = { showHiddenNodes: false }) => {
|
||
|
|
util.inspect.defaultOptions.showHidden = options.showHiddenNodes;
|
||
|
|
console.log('FORMAT ERROR', { error });
|
||
|
|
if (error instanceof sequelize.ValidationError) {
|
||
|
|
return {
|
||
|
|
success: false,
|
||
|
|
errors: error.errors.map((x) => ({ path: x.path, message: x.message })),
|
||
|
|
code: 'ERROR_DATABASE_VALIDATION',
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
if (error instanceof graphql.ValidationError) {
|
||
|
|
return {
|
||
|
|
success: false,
|
||
|
|
code: 'ERROR_GRAPHQL_VALIDATION',
|
||
|
|
errors: [{ path: null, message: error.message }],
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
return { success: false, message: 'Something went wrong' };
|
||
|
|
};
|
||
|
|
|
||
|
|
exports.formatGraphqlError = (error) => {
|
||
|
|
let { extensions, ...rest } = error;
|
||
|
|
|
||
|
|
if ('stacktrace' in extensions?.exception && process.env.MODE !== 'development') {
|
||
|
|
const { stacktrace, ...restException } = extensions.exception;
|
||
|
|
rest = {
|
||
|
|
...rest,
|
||
|
|
extensions: {
|
||
|
|
...extensions,
|
||
|
|
exception: restException,
|
||
|
|
},
|
||
|
|
};
|
||
|
|
return rest;
|
||
|
|
}
|
||
|
|
return error;
|
||
|
|
};
|