Class: GraphQL::StaticValidation::ComplexityValidator
- Inherits:
-
Object
- Object
- GraphQL::StaticValidation::ComplexityValidator
- Includes:
- Message::MessageHelper
- Defined in:
- lib/graphql/static_validation/complexity_validator.rb
Instance Method Summary collapse
-
#initialize(max_fields:, list_multiplier:) ⇒ ComplexityValidator
constructor
A new instance of ComplexityValidator.
- #validate(context) ⇒ Object
Methods included from Message::MessageHelper
Constructor Details
#initialize(max_fields:, list_multiplier:) ⇒ ComplexityValidator
Returns a new instance of ComplexityValidator.
4 5 6 7 |
# File 'lib/graphql/static_validation/complexity_validator.rb', line 4 def initialize(max_fields:, list_multiplier:) @max_fields = max_fields @list_multiplier = list_multiplier end |
Instance Method Details
#validate(context) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/graphql/static_validation/complexity_validator.rb', line 9 def validate(context) visitor = context.visitor complexity = 0 visitor[GraphQL::Language::Nodes::Field] << -> (node, parent) { field_type = field_definition.type if field_type.kind.list? complexity += list_multiplier else complexity += 1 end } visitor[GraphQL::Language::Nodes::Document].exit << -> (node, parent) { if complexity > @max_fields context.errors << ("This query is too complex. Request fewer fields.", node) end } end |