Allow to combine query filter purposes

v2
Nikita Tokarchuk 4 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" "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 // Compose is a function to compose filters into a single query
func Compose(filters ...interface{}) (query *Query) { func Compose(filters ...interface{}) (query *Query) {
@ -30,17 +32,20 @@ func Push(q *Query, f interface{}) (ok bool) {
return true return true
} }
ok = false for _, applier := range []applyFilterFunc{
ok = ok || applyBson(q, f) applyBson,
ok = ok || applyLimit(q, f) applyLimit,
ok = ok || applySort(q, f) applySort,
ok = ok || applySkip(q, f) applySkip,
ok = ok || applyProtection(q, f) applyProtection,
ok = ok || applyPreloader(q, f) applyPreloader,
ok = ok || applyUpdater(q, f) applyUpdater,
ok = ok || applyCallbacks(q, f) applyCallbacks,
} {
return ok ok = applier(q, f) || ok
}
return
} }
// applyBson is a fallback for a custom primitive.M // applyBson is a fallback for a custom primitive.M

Loading…
Cancel
Save