Class: GraphQL::Schema::Directive
- Defined in:
 - lib/graphql/schema/directive.rb,
lib/graphql/schema/directive/skip.rb,
lib/graphql/schema/directive/one_of.rb,
lib/graphql/schema/directive/feature.rb,
lib/graphql/schema/directive/flagged.rb,
lib/graphql/schema/directive/include.rb,
lib/graphql/schema/directive/transform.rb,
lib/graphql/schema/directive/deprecated.rb,
lib/graphql/schema/directive/specified_by.rb 
Overview
Subclasses of this can influence how Execution::Interpreter runs queries.
- Directive.include?: if it returns 
false, the field or fragment will be skipped altogether, as if it were absent - Directive.resolve: Wraps field resolution (so it should call 
yieldto continue) 
Direct Known Subclasses
Deprecated, Feature, Flagged, Include, OneOf, Skip, SpecifiedBy, Transform
Defined Under Namespace
Classes: Deprecated, Feature, Flagged, Include, OneOf, Skip, SpecifiedBy, Transform
Constant Summary collapse
- LOCATIONS =
 [ QUERY = :QUERY, MUTATION = :MUTATION, SUBSCRIPTION = :SUBSCRIPTION, FIELD = :FIELD, FRAGMENT_DEFINITION = :FRAGMENT_DEFINITION, FRAGMENT_SPREAD = :FRAGMENT_SPREAD, INLINE_FRAGMENT = :INLINE_FRAGMENT, SCHEMA = :SCHEMA, SCALAR = :SCALAR, OBJECT = :OBJECT, FIELD_DEFINITION = :FIELD_DEFINITION, ARGUMENT_DEFINITION = :ARGUMENT_DEFINITION, INTERFACE = :INTERFACE, UNION = :UNION, ENUM = :ENUM, ENUM_VALUE = :ENUM_VALUE, INPUT_OBJECT = :INPUT_OBJECT, INPUT_FIELD_DEFINITION = :INPUT_FIELD_DEFINITION, VARIABLE_DEFINITION = :VARIABLE_DEFINITION, ]
- DEFAULT_DEPRECATION_REASON =
 'No longer supported'- LOCATION_DESCRIPTIONS =
 { QUERY: 'Location adjacent to a query operation.', MUTATION: 'Location adjacent to a mutation operation.', SUBSCRIPTION: 'Location adjacent to a subscription operation.', FIELD: 'Location adjacent to a field.', FRAGMENT_DEFINITION: 'Location adjacent to a fragment definition.', FRAGMENT_SPREAD: 'Location adjacent to a fragment spread.', INLINE_FRAGMENT: 'Location adjacent to an inline fragment.', SCHEMA: 'Location adjacent to a schema definition.', SCALAR: 'Location adjacent to a scalar definition.', OBJECT: 'Location adjacent to an object type definition.', FIELD_DEFINITION: 'Location adjacent to a field definition.', ARGUMENT_DEFINITION: 'Location adjacent to an argument definition.', INTERFACE: 'Location adjacent to an interface definition.', UNION: 'Location adjacent to a union definition.', ENUM: 'Location adjacent to an enum definition.', ENUM_VALUE: 'Location adjacent to an enum value definition.', INPUT_OBJECT: 'Location adjacent to an input object type definition.', INPUT_FIELD_DEFINITION: 'Location adjacent to an input object field definition.', VARIABLE_DEFINITION: 'Location adjacent to a variable definition.', }
Constants included from Member::HasArguments
Member::HasArguments::NO_ARGUMENTS
Constants included from Member::GraphQLTypeNames
Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int
Instance Attribute Summary collapse
Attributes included from Member::BaseDSLMethods
Attributes included from Member::RelayShortcuts
#connection_type, #connection_type_class, #edge_type, #edge_type_class
Attributes included from Member::HasAstNode
Class Method Summary collapse
- 
  
    
      .default_directive(new_default_directive = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .default_directive?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .default_graphql_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return a name based on the class name, but downcase the first letter.
 - 
  
    
      .include?(_object, arguments, context)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
If false, this part of the query won’t be evaluated.
 - 
  
    
      .locations(*new_locations)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .on_field?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .on_fragment?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .on_operation?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .path  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .repeatable(new_value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .repeatable?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      .resolve(object, arguments, context)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Continuing is passed as a block;
yieldto continue. - 
  
    
      .resolve_each(object, arguments, context)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Continuing is passed as a block, yield to continue.
 - 
  
    
      .static_include?(_arguments, _context)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Determines whether Execution::Lookahead considers the field to be selected.
 
Instance Method Summary collapse
- 
  
    
      #graphql_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #initialize(owner, **arguments)  ⇒ Directive 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Directive.
 
Methods included from Member::HasArguments
add_argument, all_argument_definitions, any_arguments?, argument, argument_class, arguments_statically_coercible?, coerce_arguments, get_argument, own_arguments, remove_argument, validate_directive_argument
Methods included from Member::HasArguments::HasDirectiveArguments
Methods included from Member::BaseDSLMethods
#authorized?, #comment, #default_relay, #description, #introspection, #introspection?, #mutation, #name, #visible?
Methods included from Member::BaseDSLMethods::ConfigurationExtension
Methods included from Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Methods included from Member::Scoped
#inherited, #reauthorize_scoped_objects, #scope_items
Methods included from Member::HasPath
Methods included from Member::HasAstNode
Methods included from Member::HasDirectives
add_directive, #directive, #directives, get_directives, #inherited, #remove_directive, remove_directive
Constructor Details
#initialize(owner, **arguments) ⇒ Directive
Returns a new instance of Directive.
      114 115 116 117 118 119 120 121 122 123  | 
    
      # File 'lib/graphql/schema/directive.rb', line 114 def initialize(owner, **arguments) @owner = owner assert_valid_owner # It's be nice if we had the real context here, but we don't. What we _would_ get is: # - error handling # - lazy resolution # Probably, those won't be needed here, since these are configuration arguments, # not runtime arguments. @arguments = self.class.coerce_arguments(nil, arguments, Query::NullContext.instance) end  | 
  
Instance Attribute Details
#arguments ⇒ GraphQL::Interpreter::Arguments (readonly)
      112 113 114  | 
    
      # File 'lib/graphql/schema/directive.rb', line 112 def arguments @arguments end  | 
  
#owner ⇒ GraphQL::Schema::Field, ... (readonly)
      109 110 111  | 
    
      # File 'lib/graphql/schema/directive.rb', line 109 def owner @owner end  | 
  
Class Method Details
.default_directive(new_default_directive = nil) ⇒ Object
      44 45 46 47 48 49 50 51 52  | 
    
      # File 'lib/graphql/schema/directive.rb', line 44 def default_directive(new_default_directive = nil) if new_default_directive != nil @default_directive = new_default_directive elsif @default_directive.nil? @default_directive = (superclass.respond_to?(:default_directive) ? superclass.default_directive : false) else !!@default_directive end end  | 
  
.default_directive? ⇒ Boolean
      54 55 56  | 
    
      # File 'lib/graphql/schema/directive.rb', line 54 def default_directive? default_directive end  | 
  
.default_graphql_name ⇒ Object
Return a name based on the class name, but downcase the first letter.
      23 24 25 26 27 28 29  | 
    
      # File 'lib/graphql/schema/directive.rb', line 23 def default_graphql_name @default_graphql_name ||= begin camelized_name = super.dup camelized_name[0] = camelized_name[0].downcase -camelized_name end end  | 
  
.include?(_object, arguments, context) ⇒ Boolean
If false, this part of the query won’t be evaluated
      59 60 61  | 
    
      # File 'lib/graphql/schema/directive.rb', line 59 def include?(_object, arguments, context) static_include?(arguments, context) end  | 
  
.locations(*new_locations) ⇒ Object
      31 32 33 34 35 36 37 38 39 40 41 42  | 
    
      # File 'lib/graphql/schema/directive.rb', line 31 def locations(*new_locations) if !new_locations.empty? new_locations.each do |new_loc| if !LOCATIONS.include?(new_loc.to_sym) raise ArgumentError, "#{self} (#{self.graphql_name}) has an invalid directive location: `locations #{new_loc}` " end end @locations = new_locations else @locations ||= (superclass.respond_to?(:locations) ? superclass.locations : []) end end  | 
  
.on_field? ⇒ Boolean
      78 79 80  | 
    
      # File 'lib/graphql/schema/directive.rb', line 78 def on_field? locations.include?(FIELD) end  | 
  
.on_fragment? ⇒ Boolean
      82 83 84  | 
    
      # File 'lib/graphql/schema/directive.rb', line 82 def on_fragment? locations.include?(FRAGMENT_SPREAD) && locations.include?(INLINE_FRAGMENT) end  | 
  
.on_operation? ⇒ Boolean
      86 87 88  | 
    
      # File 'lib/graphql/schema/directive.rb', line 86 def on_operation? locations.include?(QUERY) && locations.include?(MUTATION) && locations.include?(SUBSCRIPTION) end  | 
  
.path ⇒ Object
      17 18 19  | 
    
      # File 'lib/graphql/schema/directive.rb', line 17 def path "@#{super}" end  | 
  
.repeatable(new_value) ⇒ Object
      94 95 96  | 
    
      # File 'lib/graphql/schema/directive.rb', line 94 def repeatable(new_value) @repeatable = new_value end  | 
  
.repeatable? ⇒ Boolean
      90 91 92  | 
    
      # File 'lib/graphql/schema/directive.rb', line 90 def repeatable? !!@repeatable end  | 
  
.resolve(object, arguments, context) ⇒ Object
Continuing is passed as a block; yield to continue
      69 70 71  | 
    
      # File 'lib/graphql/schema/directive.rb', line 69 def resolve(object, arguments, context) yield end  | 
  
.resolve_each(object, arguments, context) ⇒ Object
Continuing is passed as a block, yield to continue.
      74 75 76  | 
    
      # File 'lib/graphql/schema/directive.rb', line 74 def resolve_each(object, arguments, context) yield end  | 
  
.static_include?(_arguments, _context) ⇒ Boolean
Determines whether Execution::Lookahead considers the field to be selected
      64 65 66  | 
    
      # File 'lib/graphql/schema/directive.rb', line 64 def static_include?(_arguments, _context) true end  | 
  
Instance Method Details
#graphql_name ⇒ Object
      125 126 127  | 
    
      # File 'lib/graphql/schema/directive.rb', line 125 def graphql_name self.class.graphql_name end  |