Class: GraphQL::StaticValidation::Validator
- Inherits:
-
Object
- Object
- GraphQL::StaticValidation::Validator
- Defined in:
- lib/graphql/static_validation/validator.rb
Overview
Initialized with a GraphQL::Schema, then it can validate Language::Nodes::Documentss based on that schema.
By default, it's used by Query
Instance Method Summary collapse
-
#initialize(schema:, rules: GraphQL::StaticValidation::ALL_RULES) ⇒ Validator
constructor
A new instance of Validator.
-
#validate(query) ⇒ Array<Hash>
Validate
queryagainst the schema.
Constructor Details
#initialize(schema:, rules: GraphQL::StaticValidation::ALL_RULES) ⇒ Validator
16 17 18 19 |
# File 'lib/graphql/static_validation/validator.rb', line 16 def initialize(schema:, rules: GraphQL::StaticValidation::ALL_RULES) @schema = schema @rules = rules end |
Instance Method Details
#validate(query) ⇒ Array<Hash>
Validate query against the schema. Returns an array of message hashes.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/graphql/static_validation/validator.rb', line 24 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.document GraphQL::InternalRepresentation::Visit.visit_each_node(rewrite_result.operation_definitions, context.each_irep_node_handlers) { errors: context.errors, # If there were errors, the irep is garbage irep: context.errors.any? ? nil : rewrite_result, } end |