Allow to combine query filter purposes

v2
Nikita Tokarchuk 3 years ago
parent 442320b31a
commit 024ea196f6
No known key found for this signature in database
GPG Key ID: DBFD964471BAE65C
  1. 27
      mongox/query/compose.go

@ -9,6 +9,8 @@ import (
"github.com/mainnika/mongox-go-driver/v2/mongox/base/protection"
)
type applyFilterFunc = func(query *Query, filter interface{}) (ok bool)
// Compose is a function to compose filters into a single query
func Compose(filters ...interface{}) (query *Query) {
@ -30,17 +32,20 @@ func Push(q *Query, f interface{}) (ok bool) {
return true
}
ok = false
ok = ok || applyBson(q, f)
ok = ok || applyLimit(q, f)
ok = ok || applySort(q, f)
ok = ok || applySkip(q, f)
ok = ok || applyProtection(q, f)
ok = ok || applyPreloader(q, f)
ok = ok || applyUpdater(q, f)
ok = ok || applyCallbacks(q, f)
return ok
for _, applier := range []applyFilterFunc{
applyBson,
applyLimit,
applySort,
applySkip,
applyProtection,
applyPreloader,
applyUpdater,
applyCallbacks,
} {
ok = applier(q, f) || ok
}
return
}
// applyBson is a fallback for a custom primitive.M

Loading…
Cancel
Save