Files
sxchnge/backend/pkg/merrors/routes.go
T

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,
}
}