Bumps [github.com/gookit/config/v2](https://github.com/gookit/config) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/gookit/config/releases) - [Commits](https://github.com/gookit/config/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: github.com/gookit/config/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
155 lines
2.4 KiB
Go
155 lines
2.4 KiB
Go
package errorx
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// ErrorCoder interface
|
|
type ErrorCoder interface {
|
|
error
|
|
Code() int
|
|
}
|
|
|
|
// ErrorR useful for web service replay/response.
|
|
// code == 0 is successful. otherwise, is failed.
|
|
type ErrorR interface {
|
|
ErrorCoder
|
|
fmt.Stringer
|
|
IsSuc() bool
|
|
IsFail() bool
|
|
}
|
|
|
|
// error reply struct
|
|
type errorR struct {
|
|
code int
|
|
msg string
|
|
}
|
|
|
|
// NewR code with error response
|
|
func NewR(code int, msg string) ErrorR {
|
|
return &errorR{code: code, msg: msg}
|
|
}
|
|
|
|
// Fail code with error response
|
|
func Fail(code int, msg string) ErrorR {
|
|
return &errorR{code: code, msg: msg}
|
|
}
|
|
|
|
// Failf code with error response
|
|
func Failf(code int, tpl string, v ...any) ErrorR {
|
|
return &errorR{code: code, msg: fmt.Sprintf(tpl, v...)}
|
|
}
|
|
|
|
// Suc success response reply
|
|
func Suc(msg string) ErrorR {
|
|
return &errorR{code: 0, msg: msg}
|
|
}
|
|
|
|
// IsSuc code value check
|
|
func (e *errorR) IsSuc() bool {
|
|
return e.code == 0
|
|
}
|
|
|
|
// IsFail code value check
|
|
func (e *errorR) IsFail() bool {
|
|
return e.code != 0
|
|
}
|
|
|
|
// Code value
|
|
func (e *errorR) Code() int {
|
|
return e.code
|
|
}
|
|
|
|
// Error string
|
|
func (e *errorR) Error() string {
|
|
return e.msg
|
|
}
|
|
|
|
// String get
|
|
func (e *errorR) String() string {
|
|
return e.msg + "(code: " + strconv.FormatInt(int64(e.code), 10) + ")"
|
|
}
|
|
|
|
// GoString get.
|
|
func (e *errorR) GoString() string {
|
|
return e.String()
|
|
}
|
|
|
|
// ErrorM multi error map
|
|
type ErrorM map[string]error
|
|
|
|
// ErrMap alias of ErrorM
|
|
type ErrMap = ErrorM
|
|
|
|
// Error string
|
|
func (e ErrorM) Error() string {
|
|
var sb strings.Builder
|
|
for name, err := range e {
|
|
sb.WriteString(name)
|
|
sb.WriteByte(':')
|
|
sb.WriteString(err.Error())
|
|
sb.WriteByte('\n')
|
|
}
|
|
return sb.String()
|
|
}
|
|
|
|
// ErrorOrNil error
|
|
func (e ErrorM) ErrorOrNil() error {
|
|
if len(e) == 0 {
|
|
return nil
|
|
}
|
|
return e
|
|
}
|
|
|
|
// IsEmpty error
|
|
func (e ErrorM) IsEmpty() bool {
|
|
return len(e) == 0
|
|
}
|
|
|
|
// One error
|
|
func (e ErrorM) One() error {
|
|
for _, err := range e {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Errors multi error list
|
|
type Errors []error
|
|
|
|
// ErrList alias for Errors
|
|
type ErrList = Errors
|
|
|
|
// Error string
|
|
func (es Errors) Error() string {
|
|
var sb strings.Builder
|
|
for _, err := range es {
|
|
sb.WriteString(err.Error())
|
|
sb.WriteByte('\n')
|
|
}
|
|
return sb.String()
|
|
}
|
|
|
|
// ErrorOrNil error
|
|
func (es Errors) ErrorOrNil() error {
|
|
if len(es) == 0 {
|
|
return nil
|
|
}
|
|
return es
|
|
}
|
|
|
|
// IsEmpty error
|
|
func (es Errors) IsEmpty() bool {
|
|
return len(es) == 0
|
|
}
|
|
|
|
// First error
|
|
func (es Errors) First() error {
|
|
if len(es) > 0 {
|
|
return es[0]
|
|
}
|
|
return nil
|
|
}
|