'use strict'; const createError = require("create-error"); const DatabaseError = require("./database-error"); let UnknownError = createError("UnknownError"); let handlers = [ require("./errors/unique-constraint-violation"), require("./errors/check-constraint-violation"), require("./errors/foreign-key-constraint-violation"), require("./errors/enum"), require("./errors/invalid-type"), require("./errors/undefined-column"), require("./errors/not-null-constraint-violation"), ] function convertError(error) { let handler = handlers.find(handler => handler.check(error)); if (handler != null) { return handler.convert(error); } else { throw new UnknownError("The specified error is not of a recognized type"); } } function rethrowBetterError(originalError) { try { let betterError = convertError(originalError); throw betterError; } catch (err) { if (err instanceof UnknownError) { throw originalError; } else { throw err; } } } let errorTypes = handlers.reduce((errors, handler) => { errors[handler.errorName] = handler.error; return errors; }, {}); module.exports = Object.assign({ convert: convertError, rethrow: rethrowBetterError, UnknownError: UnknownError, DatabaseError: DatabaseError }, errorTypes)