Class: GraphQL::Introspection::InputValueType

Inherits:
BaseObject show all
Defined in:
lib/graphql/introspection/input_value_type.rb

Constant Summary

Constants included from Schema::Member::HasFields

Schema::Member::HasFields::CONFLICT_FIELD_NAMES, Schema::Member::HasFields::GRAPHQL_RUBY_KEYWORDS, Schema::Member::HasFields::RUBY_KEYWORDS

Constants included from EmptyObjects

EmptyObjects::EMPTY_ARRAY, EmptyObjects::EMPTY_HASH

Constants included from Schema::Member::GraphQLTypeNames

Schema::Member::GraphQLTypeNames::Boolean, Schema::Member::GraphQLTypeNames::ID, Schema::Member::GraphQLTypeNames::Int

Instance Attribute Summary

Attributes inherited from Schema::Object

#context, #object

Attributes included from Schema::Member::BaseDSLMethods

#default_graphql_name, #graphql_name

Attributes included from Schema::Member::RelayShortcuts

#connection_type, #connection_type_class, #edge_type, #edge_type_class

Attributes included from Schema::Member::HasAstNode

#ast_node

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseObject

field

Methods inherited from Schema::Object

authorized_new, const_missing, #dataloader, #initialize, kind, #raw_value, scoped_new, wrap, wrap_scoped

Methods included from Schema::Member::HasFields

#add_field, #all_field_definitions, #field, #field_class, #global_id_field, #has_no_fields, #has_no_fields?, #own_fields

Methods included from Schema::Member::HasInterfaces

#implements, #interface_type_memberships, #interfaces, #own_interface_type_memberships

Methods included from Schema::Member::HasDataloader

#dataload, #dataload_all, #dataload_association, #dataload_record, #dataloader

Methods included from Schema::Member::BaseDSLMethods

#authorized?, #comment, #default_relay, #description, #introspection, #introspection?, #mutation, #name, #visible?

Methods included from Schema::Member::BaseDSLMethods::ConfigurationExtension

#inherited

Methods included from Schema::Member::TypeSystemHelpers

#initialize, #kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature

Methods included from Schema::Member::Scoped

#inherited, #reauthorize_scoped_objects, #scope_items

Methods included from Schema::Member::HasPath

#path

Methods included from Schema::Member::HasAstNode

#inherited

Methods included from Schema::Member::HasDirectives

add_directive, #directive, #directives, get_directives, #inherited, #remove_directive, remove_directive

Constructor Details

This class inherits a constructor from GraphQL::Schema::Object

Class Method Details

.resolve_default_value(object, context) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/graphql/introspection/input_value_type.rb', line 24

def self.resolve_default_value(object, context)
  if object.default_value?
    value = object.default_value
    if value.nil?
      'null'
    else
      if (object.type.kind.list? || (object.type.kind.non_null? && object.type.of_type.kind.list?)) && !value.respond_to?(:map)
        # This is a bit odd -- we expect the default value to be an application-style value, so we use coerce result below.
        # But coerce_result doesn't wrap single-item lists, which are valid inputs to list types.
        # So, apply that wrapper here if needed.
        value = [value]
      end
      coerced_default_value = object.type.coerce_result(value, context)
      serialize_default_value(coerced_default_value, object.type, context)
    end
  else
    nil
  end
end

.resolve_is_deprecated(object, context) ⇒ Object



16
17
18
# File 'lib/graphql/introspection/input_value_type.rb', line 16

def self.resolve_is_deprecated(object, context)
  !!object.deprecation_reason
end

.serialize_default_value(value, type, context) ⇒ Object

Recursively serialize, taking care not to add quotes to enum values



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/graphql/introspection/input_value_type.rb', line 52

def self.serialize_default_value(value, type, context)
  if value.nil?
    'null'
  elsif type.kind.list?
    inner_type = type.of_type
    "[" + value.map { |v| serialize_default_value(v, inner_type, context) }.join(", ") + "]"
  elsif type.kind.non_null?
    serialize_default_value(value, type.of_type, context)
  elsif type.kind.enum?
    value
  elsif type.kind.input_object?
    "{" +
      value.map do |k, v|
        arg_defn = type.get_argument(k, context)
        "#{k}: #{serialize_default_value(v, arg_defn.type, context)}"
      end.join(", ") +
      "}"
  else
    GraphQL::Language.serialize(value)
  end
end

Instance Method Details

#default_valueObject



44
45
46
# File 'lib/graphql/introspection/input_value_type.rb', line 44

def default_value
  self.class.resolve_default_value(object, context)
end

#is_deprecatedObject



20
21
22
# File 'lib/graphql/introspection/input_value_type.rb', line 20

def is_deprecated
  self.class.resolve_is_deprecated(object, context)
end