Files
sendico/api/pkg/merrors/errors.go
2025-11-18 00:20:25 +01:00

82 lines
2.0 KiB
Go

package merrors
import (
"errors"
"fmt"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var ErrNotImplemented = errors.New("notImplemented")
func NotImplemented(msg string) error {
return fmt.Errorf("%w: %s", ErrNotImplemented, msg)
}
var ErrNoData = errors.New("noData")
func NoData(msg string) error {
return fmt.Errorf("%w: %s", ErrNoData, msg)
}
var ErrInternal = errors.New("internal")
func Internal(msg string) error {
return fmt.Errorf("%w: %s", ErrInternal, msg)
}
var ErrInvalidArg = errors.New("invalidArgError")
func InvalidArgument(msg string) error {
return fmt.Errorf("%w: %s", ErrInvalidArg, msg)
}
var ErrDataConflict = errors.New("DataConflict")
func DataConflict(msg string) error {
return fmt.Errorf("%w: %s", ErrDataConflict, msg)
}
var ErrAccessDenied = errors.New("accessDenied")
func AccessDenied(object, action string, objectRef primitive.ObjectID) error {
if objectRef != primitive.NilObjectID {
return fmt.Errorf("%w: cannot %s object of type '%s' with ID '%s'", ErrAccessDenied, action, object, objectRef.Hex())
}
return fmt.Errorf("%w: cannot %s object of type '%s'", ErrAccessDenied, action, object)
}
var ErrInvalidDataType = errors.New("invalidDataType")
func InvalidDataType(msg string) error {
return fmt.Errorf("%w: %s", ErrInvalidDataType, msg)
}
var ErrUnauthorized = errors.New("unathorized")
func Unauthorized(msg string) error {
return fmt.Errorf("%w: %s", ErrUnauthorized, msg)
}
var ErrNoMessagingTopic = errors.New("messagingTopicError")
func NoMessagingTopic(topic string) error {
return fmt.Errorf("%w: messaging topic '%s' not found", ErrNoMessagingTopic, topic)
}
func InvalidArgumentWrap(err error, msg string) error {
return wrapError(ErrInvalidArg, msg, err)
}
func InternalWrap(err error, msg string) error {
return wrapError(ErrInternal, msg, err)
}
func wrapError(base error, msg string, err error) error {
baseErr := fmt.Errorf("%w: %s", base, msg)
if err == nil {
return baseErr
}
return errors.Join(baseErr, err)
}