128 lines
5.5 KiB
Go
128 lines
5.5 KiB
Go
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,
|
|
}
|
|
}
|