package merrors import "strings" const routeErrorCodePrefix = "ROUTE_ERROR_CODE_" type routeMetadataError struct { classifiedError routeCode string } func (e routeMetadataError) ErrorInfoMetadata() map[string]string { return map[string]string{"route_error_code": e.routeCode} } const ( ReasonRouteNotFound = "ROUTE_NOT_FOUND" ReasonRouteAmbiguous = "ROUTE_AMBIGUOUS" ReasonRouteDisabled = "ROUTE_DISABLED" ReasonRouteInvalidSource = "ROUTE_INVALID_SOURCE" ReasonRouteDestinationNotFound = "ROUTE_DESTINATION_NOT_FOUND" ReasonRouteDestinationInactive = "ROUTE_DESTINATION_INACTIVE" ReasonRouteDestinationCurrencyMismatch = "ROUTE_DESTINATION_CURRENCY_MISMATCH" ReasonRouteDestinationOrgMismatch = "ROUTE_DESTINATION_ORG_MISMATCH" ReasonRouteDestinationAmbiguous = "ROUTE_DESTINATION_AMBIGUOUS" ReasonRouteDestinationOwnerMismatch = "ROUTE_DESTINATION_OWNER_MISMATCH" ReasonRouteActiveSourceConflict = "ROUTE_ACTIVE_SOURCE_CONFLICT" ReasonRouteDestinationTypeMismatch = "ROUTE_DESTINATION_TYPE_MISMATCH" ReasonRouteDestinationRoleMismatch = "ROUTE_DESTINATION_ROLE_MISMATCH" ReasonRouteIdempotencyConflict = "ROUTE_IDEMPOTENCY_CONFLICT" ReasonRouteVersionConflict = "ROUTE_VERSION_CONFLICT" ReasonRouteInvalidState = "ROUTE_INVALID_STATE" ) var ( ErrRouteNotFound = Define("route.not_found") ErrRouteAmbiguous = Define("route.ambiguous") ErrRouteDisabled = Define("route.disabled") ErrRouteInvalidSource = Define("route.invalid_source") ErrRouteDestinationNotFound = Define("route.destination_not_found") ErrRouteDestinationInactive = Define("route.destination_inactive") ErrRouteDestinationCurrencyMismatch = Define("route.destination_currency_mismatch") ErrRouteDestinationOrgMismatch = Define("route.destination_org_mismatch") ErrRouteDestinationAmbiguous = Define("route.destination_ambiguous") ErrRouteDestinationOwnerMismatch = Define("route.destination_owner_mismatch") ErrRouteActiveSourceConflict = Define("route.active_source_conflict") ErrRouteDestinationTypeMismatch = Define("route.destination_type_mismatch") ErrRouteDestinationRoleMismatch = Define("route.destination_role_mismatch") ErrRouteIdempotencyConflict = Define("route.idempotency_conflict") ErrRouteVersionConflict = Define("route.version_conflict") ErrRouteInvalidState = Define("route.invalid_state") ) func RouteNotFound(msg string) error { return newRouteClassifiedError(ErrNoData, ErrRouteNotFound, ReasonRouteNotFound, msg) } func RouteAmbiguous(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteAmbiguous, ReasonRouteAmbiguous, msg) } func RouteDisabled(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDisabled, ReasonRouteDisabled, msg) } func RouteInvalidSource(msg string) error { return newRouteClassifiedError(ErrInvalidArg, ErrRouteInvalidSource, ReasonRouteInvalidSource, msg) } func RouteDestinationNotFound(msg string) error { return newRouteClassifiedError(ErrNoData, ErrRouteDestinationNotFound, ReasonRouteDestinationNotFound, msg) } func RouteDestinationInactive(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationInactive, ReasonRouteDestinationInactive, msg) } func RouteDestinationCurrencyMismatch(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationCurrencyMismatch, ReasonRouteDestinationCurrencyMismatch, msg) } func RouteDestinationOrgMismatch(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationOrgMismatch, ReasonRouteDestinationOrgMismatch, msg) } func RouteDestinationAmbiguous(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationAmbiguous, ReasonRouteDestinationAmbiguous, msg) } func RouteDestinationOwnerMismatch(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationOwnerMismatch, ReasonRouteDestinationOwnerMismatch, msg) } func RouteActiveSourceConflict(msg string) error { return newRouteClassifiedError(ErrDataConflict, ErrRouteActiveSourceConflict, ReasonRouteActiveSourceConflict, msg) } func RouteDestinationTypeMismatch(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationTypeMismatch, ReasonRouteDestinationTypeMismatch, msg) } func RouteDestinationRoleMismatch(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteDestinationRoleMismatch, ReasonRouteDestinationRoleMismatch, msg) } func RouteIdempotencyConflict(msg string) error { return newRouteClassifiedError(ErrDataConflict, ErrRouteIdempotencyConflict, ReasonRouteIdempotencyConflict, msg) } func RouteVersionConflict(msg string) error { return newRouteClassifiedError(ErrDataConflict, ErrRouteVersionConflict, ReasonRouteVersionConflict, msg) } func RouteInvalidState(msg string) error { return newRouteClassifiedError(ErrFailedPrecondition, ErrRouteInvalidState, ReasonRouteInvalidState, msg) } func newRouteClassifiedError(base, code error, reason, msg string) error { msg = strings.TrimSpace(msg) if msg == "" && code != nil { msg = code.Error() } return routeMetadataError{ classifiedError: classifiedError{base: base, code: code, msg: msg, reason: reason, publicMessage: true}, routeCode: routeErrorCodePrefix + reason, } }