Class: GraphQL::Query::ValidationPipeline Private

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/query/validation_pipeline.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Contain the validation pipeline and expose the results.

  1. Checks in #initialize:
    • Rescue a ParseError, halt if there is one
    • Check for selected operation, halt if not found
  2. Validate the AST, halt if errors
  3. Validate the variables, halt if errors
  4. Run query analyzers, halt if errors

#valid? is false if any of the above checks halted the pipeline.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query:, parse_error:, operation_name_error:, max_depth:, max_complexity:) ⇒ ValidationPipeline

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ValidationPipeline.



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/graphql/query/validation_pipeline.rb', line 19

def initialize(query:, parse_error:, operation_name_error:, max_depth:, max_complexity:)
  @validation_errors = []
  @parse_error = parse_error
  @operation_name_error = operation_name_error
  @query = query
  @schema = query.schema
  @max_depth = max_depth
  @max_complexity = max_complexity

  @has_validated = false
end

Instance Attribute Details

#max_complexityObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



17
18
19
# File 'lib/graphql/query/validation_pipeline.rb', line 17

def max_complexity
  @max_complexity
end

#max_depthObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



17
18
19
# File 'lib/graphql/query/validation_pipeline.rb', line 17

def max_depth
  @max_depth
end

#validate_timeout_remainingObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



17
18
19
# File 'lib/graphql/query/validation_pipeline.rb', line 17

def validate_timeout_remaining
  @validate_timeout_remaining
end

Instance Method Details

#analyzersObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



43
44
45
46
# File 'lib/graphql/query/validation_pipeline.rb', line 43

def analyzers
  ensure_has_validated
  @query_analyzers
end

#has_validated?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


48
49
50
# File 'lib/graphql/query/validation_pipeline.rb', line 48

def has_validated?
  @has_validated == true
end

#valid?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns does this query have errors that should prevent it from running?.

Returns:

  • (Boolean)

    does this query have errors that should prevent it from running?



32
33
34
35
# File 'lib/graphql/query/validation_pipeline.rb', line 32

def valid?
  ensure_has_validated
  @valid
end

#validation_errorsArray<GraphQL::StaticValidation::Error, GraphQL::Query::VariableValidationError>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns Static validation errors for the query string.

Returns:



38
39
40
41
# File 'lib/graphql/query/validation_pipeline.rb', line 38

def validation_errors
  ensure_has_validated
  @validation_errors
end