feat: add code to errs.PublicError

This commit is contained in:
Gaze
2024-11-26 14:39:27 +07:00
parent 920f7fe07b
commit 58f8497997

View File

@@ -11,6 +11,7 @@ import (
type PublicError struct { type PublicError struct {
err error err error
message string message string
code string // code is optional, it can be used to identify the error type
} }
func (p PublicError) Error() string { func (p PublicError) Error() string {
@@ -21,6 +22,10 @@ func (p PublicError) Message() string {
return p.message return p.message
} }
func (p PublicError) Code() string {
return p.code
}
func (p PublicError) Unwrap() error { func (p PublicError) Unwrap() error {
return p.err return p.err
} }
@@ -29,6 +34,10 @@ func NewPublicError(message string) error {
return withstack.WithStackDepth(&PublicError{err: errors.New(message), message: message}, 1) return withstack.WithStackDepth(&PublicError{err: errors.New(message), message: message}, 1)
} }
func NewPublicErrorWithCode(message string, code string) error {
return withstack.WithStackDepth(&PublicError{err: errors.New(message), message: message, code: code}, 1)
}
func WithPublicMessage(err error, prefix string) error { func WithPublicMessage(err error, prefix string) error {
if err == nil { if err == nil {
return nil return nil
@@ -41,3 +50,16 @@ func WithPublicMessage(err error, prefix string) error {
} }
return withstack.WithStackDepth(&PublicError{err: err, message: message}, 1) return withstack.WithStackDepth(&PublicError{err: err, message: message}, 1)
} }
func WithPublicMessageCode(err error, prefix string, code string) error {
if err == nil {
return nil
}
var message string
if prefix != "" {
message = fmt.Sprintf("%s: %s", prefix, err.Error())
} else {
message = err.Error()
}
return withstack.WithStackDepth(&PublicError{err: err, message: message, code: code}, 1)
}