Home Reference Source

lib/errors/SequelizeErrorHandlers.js

const ERROR_MAP = require('./error_map');
/**
 * Defines Sequelize error handling map,
 * on every sequelize's error it will map
 * the corresponding exception to a status code
 * present on error_map.js, except for
 * SequelizeValidationError, on this particular
 * case whe will not use formatStackTrace
 * to extract the detail field, it will
 * extract the errors from the original
 * exception and map them into a new detail
 *
 */
module.exports = {
  SequelizeValidationError: errorObj => {
    const { status, code } = ERROR_MAP.FAILED_PRECONDITION;
    const details = errorObj.errors.map(err => {
      const { type, message } = err;
      return { type, message };
    });
    return { status, code, message: 'Validation Failed', details };
  },
  SequelizeDatabaseError: ERROR_MAP.INTERNAL,
  SequelizeTimeoutError: ERROR_MAP.UNAVAILABLE,
  SequelizeForeignKeyConstraintError: ERROR_MAP.FAILED_PRECONDITION,
  SequelizeUniqueConstraintError: ERROR_MAP.ALREADY_EXISTS,
  SequelizeConnectionError: ERROR_MAP.UNAVAILABLE,
  SequelizeConnectionRefusedError: ERROR_MAP.UNAVAILABLE,
  SequelizeAccessDeniedError: ERROR_MAP.PERMISSION_DENIED,
  SequelizeHostNotFoundError: ERROR_MAP.INTERNAL,
  SequelizeHostNotReachableError: ERROR_MAP.INTERNAL,
  SequelizeInvalidConnectionError: ERROR_MAP.INTERNAL,
  SequelizeConnectionTimedOutError: ERROR_MAP.INTERNAL,
  SequelizeInstanceError: ERROR_MAP.INTERNAL,
  SequelizeEmptyResultError: ERROR_MAP.INTERNAL,
  SequelizeQueryError: ERROR_MAP.INTERNAL
};