Files
releases/internal/gqlparser/validator/validator.go
T
Philip Conrad e45c79a619 build(deps): upgrade internal/gqlparser to v2.5.1 (#5159)
* internal/gqlparser: Upgrade to v2.5.1+ of the lib.
* internal/gqlparser: Add column offset to error messages.
* topdown/graphql: Refactor error message handling for gqlparser v2.5.1.
* internal/gqlparser: Remove broken tests.
* internal/gqlparser: Fix style nits.

Signed-off-by: Philip Conrad <philipaconrad@gmail.com>
2022-09-21 10:49:33 +02:00

46 lines
912 B
Go

package validator
import (
//nolint:revive
. "github.com/open-policy-agent/opa/internal/gqlparser/ast"
"github.com/open-policy-agent/opa/internal/gqlparser/gqlerror"
)
type AddErrFunc func(options ...ErrorOption)
type ruleFunc func(observers *Events, addError AddErrFunc)
type rule struct {
name string
rule ruleFunc
}
var rules []rule
// addRule to rule set.
// f is called once each time `Validate` is executed.
func AddRule(name string, f ruleFunc) {
rules = append(rules, rule{name: name, rule: f})
}
func Validate(schema *Schema, doc *QueryDocument) gqlerror.List {
var errs gqlerror.List
observers := &Events{}
for i := range rules {
rule := rules[i]
rule.rule(observers, func(options ...ErrorOption) {
err := &gqlerror.Error{
Rule: rule.name,
}
for _, o := range options {
o(err)
}
errs = append(errs, err)
})
}
Walk(schema, doc, observers)
return errs
}