class GraphQL::StaticValidation::Validator
errors = validator.validate(document)
document = GraphQL.parse(query_string)
validator = GraphQL::StaticValidation::Validator.new(schema: MySchema)
@example Validate a query
By default, it’s used by {GraphQL::Query}
Initialized with a {GraphQL::Schema}, then it can validate {GraphQL::Language::Nodes::Documents}s based on that schema.
def initialize(schema:, rules: GraphQL::StaticValidation::ALL_RULES)
-
rules
(Array<#validate(context)>
) -- a list of rules to use when validating -
schema
(GraphQL::Schema
) --
def initialize(schema:, rules: GraphQL::StaticValidation::ALL_RULES) @schema = schema @rules = rules end
def validate(query)
-
(Array
-)
Parameters:
-
query
(GraphQL::Query
) --
def validate(query) context = GraphQL::StaticValidation::ValidationContext.new(query) rewrite = GraphQL::InternalRepresentation::Rewrite.new # Put this first so its enters and exits are always called rewrite.validate(context) @rules.each do |rules| rules.new.validate(context) end context.visitor.visit # Post-validation: allow validators to register handlers on rewritten query nodes rewrite_result = rewrite.operations GraphQL::InternalRepresentation::Visit.visit_each_node(rewrite_result, context.each_irep_node_handlers) { errors: context.errors, # If there were errors, the irep is garbage irep: context.errors.any? ? nil : rewrite_result, } end