Files
datamarket/internal/service/errors.go
2026-04-01 17:05:08 +08:00

66 lines
1022 B
Go

package service
import "errors"
type Error struct {
Status int
Message string
Err error
}
func (e *Error) Error() string {
if e == nil {
return ""
}
return e.Message
}
func (e *Error) Unwrap() error {
if e == nil {
return nil
}
return e.Err
}
func newError(status int, message string, err error) error {
return &Error{
Status: status,
Message: message,
Err: err,
}
}
func badRequest(message string) error {
return newError(400, message, nil)
}
func NewValidationError(message string) error {
return badRequest(message)
}
func notFound(message string) error {
return newError(404, message, nil)
}
func internalError(message string, err error) error {
return newError(500, message, err)
}
func StatusCode(err error) int {
if serviceErr, ok := errors.AsType[*Error](err); ok {
return serviceErr.Status
}
return 500
}
func Message(err error) string {
if serviceErr, ok := errors.AsType[*Error](err); ok {
return serviceErr.Message
}
return "internal server error"
}