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