coperator/logic.go

52 lines
1.1 KiB
Go

package coperator
import "errors"
func operatorAnd(doc *Document, filter Filter, key string, value interface{}) (bool, error) {
vfilter, ok := filter.([]interface{})
if !ok {
return false, errors.New("filter must be a slice")
}
for _, v := range vfilter {
ret, err := DocumentOperator(doc, v.(Filter), "", nil)
if !ret {
return ret, err
}
}
return true, nil
}
func operatorOr(doc *Document, filter Filter, key string, value interface{}) (bool, error) {
vfilter, ok := filter.([]interface{})
if !ok {
return false, errors.New("filter must be a slice")
}
for _, v := range vfilter {
ret, err := DocumentOperator(doc, v.(Filter), "", nil)
if err != nil {
return false, err
}
if ret {
return ret, err
}
}
return false, nil
}
func operatorNor(doc *Document, filter Filter, key string, value interface{}) (bool, error) {
vfilter, ok := filter.([]interface{})
if !ok {
return false, errors.New("filter must be a slice")
}
for _, v := range vfilter {
ret, err := DocumentOperator(doc, v.(Filter), "", nil)
if err != nil {
return false, err
}
if ret {
return false, nil
}
}
return true, nil
}