diff --git a/error_12.go b/error_12.go new file mode 100644 index 00000000..7e96b8e7 --- /dev/null +++ b/error_12.go @@ -0,0 +1,7 @@ +// +build !go1.13 + +package gorm + +func isError(err, target error) bool { + return err == target +} diff --git a/error_13.go b/error_13.go new file mode 100644 index 00000000..c91b82d6 --- /dev/null +++ b/error_13.go @@ -0,0 +1,7 @@ +// +build go1.13 + +package gorm + +import "errors" + +var isError = errors.Is diff --git a/errors.go b/errors.go index d5ef8d57..5c776afa 100644 --- a/errors.go +++ b/errors.go @@ -25,12 +25,12 @@ type Errors []error func IsRecordNotFoundError(err error) bool { if errs, ok := err.(Errors); ok { for _, err := range errs { - if err == ErrRecordNotFound { + if isError(err, ErrRecordNotFound) { return true } } } - return err == ErrRecordNotFound + return isError(err, ErrRecordNotFound) } // GetErrors gets all errors that have occurred and returns a slice of errors (Error type) diff --git a/main.go b/main.go index eac28f8a..987c5c93 100644 --- a/main.go +++ b/main.go @@ -592,7 +592,7 @@ func (s *DB) NewRecord(value interface{}) bool { // RecordNotFound check if returning ErrRecordNotFound error func (s *DB) RecordNotFound() bool { for _, err := range s.GetErrors() { - if err == ErrRecordNotFound { + if isError(err, ErrRecordNotFound) { return true } } @@ -776,7 +776,7 @@ func (s *DB) SetJoinTableHandler(source interface{}, column string, handler Join // AddError add error to the db func (s *DB) AddError(err error) error { if err != nil { - if err != ErrRecordNotFound { + if !isError(err, ErrRecordNotFound) { if s.logMode == defaultLogMode { go s.print("error", fileWithLineNum(), err) } else {