You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.4 KiB
60 lines
1.4 KiB
package gorm |
|
|
|
import ( |
|
"errors" |
|
"strings" |
|
) |
|
|
|
var ( |
|
// ErrRecordNotFound record not found error, happens when haven't find any matched data when looking up with a struct |
|
ErrRecordNotFound = errors.New("record not found") |
|
// ErrInvalidSQL invalid SQL error, happens when you passed invalid SQL |
|
ErrInvalidSQL = errors.New("invalid SQL") |
|
// ErrInvalidTransaction invalid transaction when you are trying to `Commit` or `Rollback` |
|
ErrInvalidTransaction = errors.New("no valid transaction") |
|
// ErrCantStartTransaction can't start transaction when you are trying to start one with `Begin` |
|
ErrCantStartTransaction = errors.New("can't start transaction") |
|
// ErrUnaddressable unaddressable value |
|
ErrUnaddressable = errors.New("using unaddressable value") |
|
) |
|
|
|
// Errors contains all happened errors |
|
type Errors []error |
|
|
|
// GetErrors gets all happened errors |
|
func (errs Errors) GetErrors() []error { |
|
return errs |
|
} |
|
|
|
// Add adds an error |
|
func (errs Errors) Add(newErrors ...error) Errors { |
|
for _, err := range newErrors { |
|
if err == nil { |
|
continue |
|
} |
|
|
|
if errors, ok := err.(Errors); ok { |
|
errs = errs.Add(errors...) |
|
} else { |
|
ok = true |
|
for _, e := range errs { |
|
if err == e { |
|
ok = false |
|
} |
|
} |
|
if ok { |
|
errs = append(errs, err) |
|
} |
|
} |
|
} |
|
return errs |
|
} |
|
|
|
// Error format happened errors |
|
func (errs Errors) Error() string { |
|
var errors = []string{} |
|
for _, e := range errs { |
|
errors = append(errors, e.Error()) |
|
} |
|
return strings.Join(errors, "; ") |
|
}
|
|
|