From 60fc9b64179f4e77ce5a2061b2bc6bf0082fe71e Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 25 Nov 2020 19:06:29 +0800 Subject: [PATCH] add gerror.ApiCurrent impements for gerror.Error --- errors/gerror/gerror.go | 18 ++++++++++++------ util/gvalid/gvalid_error.go | 10 ++++++++++ util/gvalid/gvalid_unit_checkmap_test.go | 3 +++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/errors/gerror/gerror.go b/errors/gerror/gerror.go index ad739cc6f..8224b3f47 100644 --- a/errors/gerror/gerror.go +++ b/errors/gerror/gerror.go @@ -16,19 +16,25 @@ import ( // ApiStack is the interface for Stack feature. type ApiStack interface { - Error() string // It should be en error. + Error() string // It should be an error. Stack() string } // ApiCause is the interface for Cause feature. type ApiCause interface { - Error() string // It should be en error. + Error() string // It should be an error. Cause() error } -// ApiLevel is the interface for Current/Next feature. -type ApiLevel interface { +// ApiCurrent is the interface for Current feature. +type ApiCurrent interface { + Error() string // It should be an error. Current() error +} + +// ApiNext is the interface for Next feature. +type ApiNext interface { + Error() string // It should be an error. Next() error } @@ -133,7 +139,7 @@ func Current(err error) error { if err == nil { return nil } - if e, ok := err.(ApiLevel); ok { + if e, ok := err.(ApiCurrent); ok { return e.Current() } return err @@ -145,7 +151,7 @@ func Next(err error) error { if err == nil { return nil } - if e, ok := err.(ApiLevel); ok { + if e, ok := err.(ApiNext); ok { return e.Next() } return nil diff --git a/util/gvalid/gvalid_error.go b/util/gvalid/gvalid_error.go index b48a66563..f1d93ee3c 100644 --- a/util/gvalid/gvalid_error.go +++ b/util/gvalid/gvalid_error.go @@ -7,6 +7,7 @@ package gvalid import ( + "errors" "github.com/gogf/gf/text/gregex" "strings" ) @@ -131,6 +132,15 @@ func (e *Error) FirstString() (err string) { return } +// Current is alis of FirstString, which implements interface gerror.ApiCurrent. +func (e *Error) Current() error { + if e == nil { + return nil + } + _, err := e.FirstRule() + return errors.New(err) +} + // String returns all error messages as string, multiple error messages joined using char ';'. func (e *Error) String() string { if e == nil { diff --git a/util/gvalid/gvalid_unit_checkmap_test.go b/util/gvalid/gvalid_unit_checkmap_test.go index 61864d459..24f4102fb 100755 --- a/util/gvalid/gvalid_unit_checkmap_test.go +++ b/util/gvalid/gvalid_unit_checkmap_test.go @@ -7,6 +7,7 @@ package gvalid_test import ( + "github.com/gogf/gf/errors/gerror" "testing" "github.com/gogf/gf/test/gtest" @@ -197,5 +198,7 @@ func Test_Sequence(t *testing.T) { r, s := err.FirstRule() t.Assert(r, "required") t.Assert(s, "账号不能为空") + + t.Assert(gerror.Current(err), "账号不能为空") }) }