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)

Parameters:
  • 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)

Returns:
  • (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