Validate, Saved hooks

This commit is contained in:
Sebastian Frank
2019-09-16 11:53:02 +02:00
parent 0c9eb1c6fb
commit 35bfaa7aa4
3 changed files with 125 additions and 54 deletions

View File

@@ -6,7 +6,6 @@ import (
"strings"
"time"
"gitbase.de/gopackage/mgocrud"
"gopkg.in/mgo.v2/bson"
)
@@ -254,54 +253,3 @@ func _validateFilter(structT reflect.Type, f bson.M, checkValues bool) (bson.M,
return newF, nil
}
func validateFilter(c *Context, m mgocrud.ModelInterface, filter bson.M) (newFilter bson.M, err error) {
// spew.Dump(filter)
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("filter validation error: %s", r)
}
}()
if filter != nil {
newFilter, err = _validateFilter(reflect.TypeOf(m), filter, true)
if err != nil {
return nil, err
}
}
if i, ok := m.(interface {
ValidateFilter(*Context, bson.M) (bson.M, error)
}); ok {
// custom filter manipulation
newFilter, err = i.ValidateFilter(c, newFilter)
}
// spew.Dump(newFilter)
return newFilter, err
}
func validateSelect(c *Context, m mgocrud.ModelInterface, selector bson.M) (newSelector bson.M, err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("select validation error: %s", r)
}
}()
if selector != nil {
newSelector, err = _validateFilter(reflect.TypeOf(m), selector, false)
if err != nil {
return nil, err
}
}
if i, ok := m.(interface {
ValidateSelect(*Context, bson.M) bson.M
}); ok {
// custom select manipulation
newSelector = i.ValidateSelect(c, newSelector)
}
return newSelector, nil
}