externalize error formats + strings
This commit is contained in:
parent
4834dc5908
commit
26101760cc
20
errors.go
Normal file
20
errors.go
Normal file
@ -0,0 +1,20 @@
|
||||
package orm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNotASlice = errors.New("Current object or field is not a slice!")
|
||||
ErrNotAStruct = errors.New("Current object or field is not a struct!")
|
||||
ErrOutOfBounds = errors.New("Index(es) out of bounds!")
|
||||
ErrAppendMultipleDocuments = errors.New("Cannot append to multiple documents!")
|
||||
ErrNotSliceOrStruct = errors.New("Current object or field is not a slice nor a struct!")
|
||||
)
|
||||
|
||||
const (
|
||||
errFmtMalformedField = "Malformed field name passed: '%s'"
|
||||
errFmtNotAModel = "Type '%s' is not a model"
|
||||
errFmtNotHasID = "Type '%s' does not implement HasID"
|
||||
errFmtModelNotRegistered = "Model not registered for type: '%s'"
|
||||
)
|
6
model.go
6
model.go
@ -259,7 +259,7 @@ func (m *Model) Append(field string, a ...interface{}) error {
|
||||
fv = fv.Elem()
|
||||
}
|
||||
if fv.Kind() != reflect.Slice {
|
||||
return fmt.Errorf("Current object is not a slice!")
|
||||
return ErrNotASlice
|
||||
}
|
||||
for _, b := range a {
|
||||
val := reflect.ValueOf(incrementTagged(b))
|
||||
@ -291,7 +291,7 @@ func (m *Model) Pull(field string, a ...any) error {
|
||||
fv = fv.Elem()
|
||||
}
|
||||
if fv.Kind() != reflect.Slice {
|
||||
return fmt.Errorf("Current object is not a slice!")
|
||||
return ErrNotASlice
|
||||
}
|
||||
outer:
|
||||
for _, b := range a {
|
||||
@ -332,7 +332,7 @@ func (m *Model) Swap(field string, i, j int) error {
|
||||
return err
|
||||
}
|
||||
if i >= fv.Len() || j >= fv.Len() {
|
||||
return fmt.Errorf("index(es) out of bounds")
|
||||
return ErrOutOfBounds
|
||||
}
|
||||
oi := fv.Index(i).Interface()
|
||||
oj := fv.Index(j).Interface()
|
||||
|
@ -127,7 +127,7 @@ func doSave(c *mongo.Collection, isNew bool, arg interface{}) error {
|
||||
var err error
|
||||
m, ok := arg.(IModel)
|
||||
if !ok {
|
||||
return fmt.Errorf("type '%s' is not a model", nameOf(arg))
|
||||
return fmt.Errorf(errFmtNotAModel, nameOf(arg))
|
||||
}
|
||||
m.setSelf(m)
|
||||
now := time.Now()
|
||||
@ -170,7 +170,7 @@ func doDelete(m *Model, arg interface{}) error {
|
||||
self, ok := arg.(HasID)
|
||||
|
||||
if !ok {
|
||||
return fmt.Errorf("Object '%s' does not implement HasID", nameOf(arg))
|
||||
return fmt.Errorf(errFmtNotHasID, nameOf(arg))
|
||||
}
|
||||
c := m.getColl()
|
||||
_, err := c.DeleteOne(context.TODO(), bson.M{"_id": self.Id()})
|
||||
|
6
util.go
6
util.go
@ -148,17 +148,17 @@ func pull(s reflect.Value, idx int, typ reflect.Type) reflect.Value {
|
||||
|
||||
func checkStruct(ref reflect.Value) error {
|
||||
if ref.Kind() == reflect.Slice {
|
||||
return fmt.Errorf("Cannot append to multiple documents!")
|
||||
return ErrAppendMultipleDocuments
|
||||
}
|
||||
if ref.Kind() != reflect.Struct {
|
||||
return fmt.Errorf("Current object is not a struct!")
|
||||
return ErrNotAStruct
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkSlice(ref reflect.Value) error {
|
||||
if ref.Kind() != reflect.Slice {
|
||||
return fmt.Errorf("Current field is not a slice!")
|
||||
return ErrNotASlice
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user