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()
|
fv = fv.Elem()
|
||||||
}
|
}
|
||||||
if fv.Kind() != reflect.Slice {
|
if fv.Kind() != reflect.Slice {
|
||||||
return fmt.Errorf("Current object is not a slice!")
|
return ErrNotASlice
|
||||||
}
|
}
|
||||||
for _, b := range a {
|
for _, b := range a {
|
||||||
val := reflect.ValueOf(incrementTagged(b))
|
val := reflect.ValueOf(incrementTagged(b))
|
||||||
@ -291,7 +291,7 @@ func (m *Model) Pull(field string, a ...any) error {
|
|||||||
fv = fv.Elem()
|
fv = fv.Elem()
|
||||||
}
|
}
|
||||||
if fv.Kind() != reflect.Slice {
|
if fv.Kind() != reflect.Slice {
|
||||||
return fmt.Errorf("Current object is not a slice!")
|
return ErrNotASlice
|
||||||
}
|
}
|
||||||
outer:
|
outer:
|
||||||
for _, b := range a {
|
for _, b := range a {
|
||||||
@ -332,7 +332,7 @@ func (m *Model) Swap(field string, i, j int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if i >= fv.Len() || j >= fv.Len() {
|
if i >= fv.Len() || j >= fv.Len() {
|
||||||
return fmt.Errorf("index(es) out of bounds")
|
return ErrOutOfBounds
|
||||||
}
|
}
|
||||||
oi := fv.Index(i).Interface()
|
oi := fv.Index(i).Interface()
|
||||||
oj := fv.Index(j).Interface()
|
oj := fv.Index(j).Interface()
|
||||||
|
@ -127,7 +127,7 @@ func doSave(c *mongo.Collection, isNew bool, arg interface{}) error {
|
|||||||
var err error
|
var err error
|
||||||
m, ok := arg.(IModel)
|
m, ok := arg.(IModel)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("type '%s' is not a model", nameOf(arg))
|
return fmt.Errorf(errFmtNotAModel, nameOf(arg))
|
||||||
}
|
}
|
||||||
m.setSelf(m)
|
m.setSelf(m)
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
@ -170,7 +170,7 @@ func doDelete(m *Model, arg interface{}) error {
|
|||||||
self, ok := arg.(HasID)
|
self, ok := arg.(HasID)
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("Object '%s' does not implement HasID", nameOf(arg))
|
return fmt.Errorf(errFmtNotHasID, nameOf(arg))
|
||||||
}
|
}
|
||||||
c := m.getColl()
|
c := m.getColl()
|
||||||
_, err := c.DeleteOne(context.TODO(), bson.M{"_id": self.Id()})
|
_, 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 {
|
func checkStruct(ref reflect.Value) error {
|
||||||
if ref.Kind() == reflect.Slice {
|
if ref.Kind() == reflect.Slice {
|
||||||
return fmt.Errorf("Cannot append to multiple documents!")
|
return ErrAppendMultipleDocuments
|
||||||
}
|
}
|
||||||
if ref.Kind() != reflect.Struct {
|
if ref.Kind() != reflect.Struct {
|
||||||
return fmt.Errorf("Current object is not a struct!")
|
return ErrNotAStruct
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkSlice(ref reflect.Value) error {
|
func checkSlice(ref reflect.Value) error {
|
||||||
if ref.Kind() != reflect.Slice {
|
if ref.Kind() != reflect.Slice {
|
||||||
return fmt.Errorf("Current field is not a slice!")
|
return ErrNotASlice
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user