OR
This commit is contained in:
35
dbs/dbs.go
35
dbs/dbs.go
@@ -48,30 +48,30 @@ func (m Operator) ToMongoOperator(k string, value interface{}) bson.M {
|
|||||||
fmt.Println("Recovered. Error:\n", r, debug.Stack())
|
fmt.Println("Recovered. Error:\n", r, debug.Stack())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
defaultValue := bson.M{k: bson.M{"$regex": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
defaultValue := bson.M{k: bson.M{"$regex": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
switch m {
|
switch m {
|
||||||
case LIKE:
|
case LIKE:
|
||||||
return bson.M{k: bson.M{"$regex": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$regex": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case EXISTS:
|
case EXISTS:
|
||||||
return bson.M{k: bson.M{"$exists": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$exists": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case IN:
|
case IN:
|
||||||
return bson.M{k: bson.M{"$in": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$in": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case GTE:
|
case GTE:
|
||||||
return bson.M{k: bson.M{"$gte": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$gte": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case GT:
|
case GT:
|
||||||
return bson.M{k: bson.M{"$gt": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$gt": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case LTE:
|
case LTE:
|
||||||
return bson.M{k: bson.M{"$lte": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$lte": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case LT:
|
case LT:
|
||||||
return bson.M{k: bson.M{"$lt": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$lt": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case ELEMMATCH:
|
case ELEMMATCH:
|
||||||
return bson.M{k: bson.M{"$elemMatch": m.ToValueOperator(StringToOperator(m.String()), value)}}
|
return bson.M{k: bson.M{"$elemMatch": m.ToValueOperator(StringToOperator(m.String()), value, false)}}
|
||||||
case EQUAL:
|
case EQUAL:
|
||||||
return bson.M{k: value}
|
return bson.M{k: value}
|
||||||
case NOT:
|
case NOT:
|
||||||
return bson.M{"$not": m.ToValueOperator(StringToOperator(m.String()), value)}
|
return bson.M{"$not": m.ToValueOperator(StringToOperator(m.String()), value, false)}
|
||||||
case OR:
|
case OR:
|
||||||
return bson.M{"$or": m.ToValueOperator(StringToOperator(m.String()), value)}
|
return bson.M{"$or": m.ToValueOperator(StringToOperator(m.String()), value, true)}
|
||||||
default:
|
default:
|
||||||
return defaultValue
|
return defaultValue
|
||||||
}
|
}
|
||||||
@@ -113,10 +113,19 @@ func GetBson(filters *Filters) bson.D {
|
|||||||
return f
|
return f
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m Operator) ToValueOperator(operator Operator, value interface{}) interface{} {
|
func (m Operator) ToValueOperator(operator Operator, value interface{}, or bool) interface{} {
|
||||||
switch value := value.(type) {
|
switch value := value.(type) {
|
||||||
case *Filters:
|
case *Filters:
|
||||||
return GetBson(value)
|
bson := GetBson(value)
|
||||||
|
if or {
|
||||||
|
for _, b := range bson {
|
||||||
|
if b.Key == "$or" {
|
||||||
|
return b.Value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return bson
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
if strings.TrimSpace(fmt.Sprintf("%v", value)) == "*" {
|
if strings.TrimSpace(fmt.Sprintf("%v", value)) == "*" {
|
||||||
value = ""
|
value = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user