Class: GraphQL::BaseType
- Inherits:
-
Object
- Object
- GraphQL::BaseType
- Includes:
- Define::InstanceDefinable, Define::NonNullWithBang
- Defined in:
- lib/graphql/base_type.rb
Overview
The parent for all type classes.
Direct Known Subclasses
EnumType, InputObjectType, InterfaceType, ListType, NonNullType, ObjectType, ScalarType, UnionType
Defined Under Namespace
Modules: ModifiesAnotherType
Instance Attribute Summary collapse
-
#ast_node ⇒ Object
Returns the value of attribute ast_node.
- #default_relay ⇒ Object writeonly private
- #default_scalar ⇒ Object writeonly private
-
#description ⇒ String?
A description for this type.
- #introspection ⇒ Object writeonly private
-
#name ⇒ String
The name of this type, must be unique within a Schema.
Class Method Summary collapse
-
.resolve_related_type(type_arg) ⇒ GraphQL::BaseType
During schema definition, types can be defined inside procs or as strings.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Are these types equivalent? (incl. non-null, list).
- #coerce_input(value, ctx = nil) ⇒ Object
- #coerce_isolated_input(value) ⇒ Object
- #coerce_isolated_result(value) ⇒ Object
- #coerce_result(value, ctx) ⇒ Object
-
#connection_type ⇒ GraphQL::ObjectType
The default connection type for this object type.
-
#default_relay? ⇒ Boolean
Is this type a built-in Relay type? (
Node
,PageInfo
). -
#default_scalar? ⇒ Boolean
Is this type a built-in scalar type? (eg,
String
,Int
). -
#define_connection(**kwargs, &block) ⇒ GraphQL::ObjectType
Define a custom connection type for this object type.
-
#define_edge(**kwargs, &block) ⇒ GraphQL::ObjectType
Define a custom edge type for this object type.
-
#edge_type ⇒ GraphQL::ObjectType
The default edge type for this object type.
-
#get_field(name) ⇒ GraphQL::Field?
Types with fields may override this.
-
#initialize ⇒ BaseType
constructor
A new instance of BaseType.
- #initialize_copy(other) ⇒ Object
-
#introspection? ⇒ Boolean
Is this type a predefined introspection type?.
-
#list? ⇒ Boolean
Returns true if this is a list type.
-
#non_null? ⇒ Boolean
Returns true if this is a non-nullable type.
-
#resolve_type(value, ctx) ⇒ Object
Find out which possible type to use for
value
. -
#to_definition(schema, printer: nil, **args) ⇒ String
Return a GraphQL string for the type definition.
-
#to_list_type ⇒ GraphQL::ListType
A list version of this type.
-
#to_non_null_type ⇒ GraphQL::NonNullType
A non-null version of this type.
-
#to_s ⇒ Object
(also: #inspect)
Print the human-readable name of this type using the query-string naming pattern.
-
#unwrap ⇒ Object
If this type is modifying an underlying type, return the underlying type.
- #valid_input?(value, ctx = nil) ⇒ Boolean
- #valid_isolated_input?(value) ⇒ Boolean
- #validate_input(value, ctx = nil) ⇒ Object
- #validate_isolated_input(value) ⇒ Object
Methods included from Define::InstanceDefinable
Methods included from Define::NonNullWithBang
Constructor Details
#initialize ⇒ BaseType
Returns a new instance of BaseType.
20 21 22 23 24 |
# File 'lib/graphql/base_type.rb', line 20 def initialize @introspection = false @default_scalar = false @default_relay = false end |
Instance Attribute Details
#ast_node ⇒ Object
Returns the value of attribute ast_node.
18 19 20 |
# File 'lib/graphql/base_type.rb', line 18 def ast_node @ast_node end |
#default_relay=(value) ⇒ Object (writeonly)
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.
60 61 62 |
# File 'lib/graphql/base_type.rb', line 60 def default_relay=(value) @default_relay = value end |
#default_scalar=(value) ⇒ Object (writeonly)
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.
60 61 62 |
# File 'lib/graphql/base_type.rb', line 60 def default_scalar=(value) @default_scalar = value end |
#description ⇒ String?
Returns a description for this type.
42 43 44 |
# File 'lib/graphql/base_type.rb', line 42 def description @description end |
#introspection=(value) ⇒ Object (writeonly)
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.
60 61 62 |
# File 'lib/graphql/base_type.rb', line 60 def introspection=(value) @introspection = value end |
#name ⇒ String
Returns the name of this type, must be unique within a Schema.
34 35 36 |
# File 'lib/graphql/base_type.rb', line 34 def name @name end |
Class Method Details
.resolve_related_type(type_arg) ⇒ GraphQL::BaseType
During schema definition, types can be defined inside procs or as strings. This function converts it to a type instance
172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/graphql/base_type.rb', line 172 def self.(type_arg) case type_arg when Proc # lazy-eval it type_arg.call when String # Get a constant by this name Object.const_get(type_arg) else type_arg end end |
Instance Method Details
#==(other) ⇒ Boolean
Returns are these types equivalent? (incl. non-null, list).
65 66 67 |
# File 'lib/graphql/base_type.rb', line 65 def ==(other) other.is_a?(GraphQL::BaseType) && self.name == other.name end |
#coerce_input(value, ctx = nil) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/graphql/base_type.rb', line 146 def coerce_input(value, ctx = nil) if value.nil? nil else if ctx.nil? warn_deprecated_coerce("coerce_isolated_input") ctx = GraphQL::Query::NullContext end coerce_non_null_input(value, ctx) end end |
#coerce_isolated_input(value) ⇒ Object
116 117 118 |
# File 'lib/graphql/base_type.rb', line 116 def coerce_isolated_input(value) coerce_input(value, GraphQL::Query::NullContext) end |
#coerce_isolated_result(value) ⇒ Object
120 121 122 |
# File 'lib/graphql/base_type.rb', line 120 def coerce_isolated_result(value) coerce_result(value, GraphQL::Query::NullContext) end |
#coerce_result(value, ctx) ⇒ Object
158 159 160 |
# File 'lib/graphql/base_type.rb', line 158 def coerce_result(value, ctx) raise NotImplementedError end |
#connection_type ⇒ GraphQL::ObjectType
Returns The default connection type for this object type.
186 187 188 |
# File 'lib/graphql/base_type.rb', line 186 def connection_type @connection_type ||= define_connection end |
#default_relay? ⇒ Boolean
Returns Is this type a built-in Relay type? (Node
, PageInfo
).
55 56 57 |
# File 'lib/graphql/base_type.rb', line 55 def default_relay? @default_relay end |
#default_scalar? ⇒ Boolean
Returns Is this type a built-in scalar type? (eg, String
, Int
).
50 51 52 |
# File 'lib/graphql/base_type.rb', line 50 def default_scalar? @default_scalar end |
#define_connection(**kwargs, &block) ⇒ GraphQL::ObjectType
Define a custom connection type for this object type
192 193 194 |
# File 'lib/graphql/base_type.rb', line 192 def define_connection(**kwargs, &block) GraphQL::Relay::ConnectionType.create_type(self, **kwargs, &block) end |
#define_edge(**kwargs, &block) ⇒ GraphQL::ObjectType
Define a custom edge type for this object type
203 204 205 |
# File 'lib/graphql/base_type.rb', line 203 def define_edge(**kwargs, &block) GraphQL::Relay::EdgeType.create_type(self, **kwargs, &block) end |
#edge_type ⇒ GraphQL::ObjectType
Returns The default edge type for this object type.
197 198 199 |
# File 'lib/graphql/base_type.rb', line 197 def edge_type @edge_type ||= define_edge end |
#get_field(name) ⇒ GraphQL::Field?
Types with fields may override this
165 166 167 |
# File 'lib/graphql/base_type.rb', line 165 def get_field(name) nil end |
#initialize_copy(other) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/graphql/base_type.rb', line 26 def initialize_copy(other) super # Reset these derived defaults @connection_type = nil @edge_type = nil end |
#introspection? ⇒ Boolean
Returns Is this type a predefined introspection type?.
45 46 47 |
# File 'lib/graphql/base_type.rb', line 45 def introspection? @introspection end |
#list? ⇒ Boolean
Returns true if this is a list type. A non-nullable list is considered a list.
223 224 225 |
# File 'lib/graphql/base_type.rb', line 223 def list? false end |
#non_null? ⇒ Boolean
Returns true if this is a non-nullable type. A nullable list of non-nullables is considered nullable.
218 219 220 |
# File 'lib/graphql/base_type.rb', line 218 def non_null? false end |
#resolve_type(value, ctx) ⇒ Object
Find out which possible type to use for value
.
Returns self if there are no possible types (ie, not Union or Interface)
97 98 99 |
# File 'lib/graphql/base_type.rb', line 97 def resolve_type(value, ctx) self end |
#to_definition(schema, printer: nil, **args) ⇒ String
Return a GraphQL string for the type definition
212 213 214 215 |
# File 'lib/graphql/base_type.rb', line 212 def to_definition(schema, printer: nil, **args) printer ||= GraphQL::Schema::Printer.new(schema, **args) printer.print_type(self) end |
#to_list_type ⇒ GraphQL::ListType
Returns a list version of this type.
81 82 83 |
# File 'lib/graphql/base_type.rb', line 81 def to_list_type GraphQL::ListType.new(of_type: self) end |
#to_non_null_type ⇒ GraphQL::NonNullType
Returns a non-null version of this type.
76 77 78 |
# File 'lib/graphql/base_type.rb', line 76 def to_non_null_type GraphQL::NonNullType.new(of_type: self) end |
#to_s ⇒ Object Also known as: inspect
Print the human-readable name of this type using the query-string naming pattern
102 103 104 |
# File 'lib/graphql/base_type.rb', line 102 def to_s name end |
#unwrap ⇒ Object
If this type is modifying an underlying type,
return the underlying type. (Otherwise, return self
.)
71 72 73 |
# File 'lib/graphql/base_type.rb', line 71 def unwrap self end |
#valid_input?(value, ctx = nil) ⇒ Boolean
124 125 126 127 128 129 130 131 |
# File 'lib/graphql/base_type.rb', line 124 def valid_input?(value, ctx = nil) if ctx.nil? warn_deprecated_coerce("valid_isolated_input?") ctx = GraphQL::Query::NullContext end validate_input(value, ctx).valid? end |
#valid_isolated_input?(value) ⇒ Boolean
108 109 110 |
# File 'lib/graphql/base_type.rb', line 108 def valid_isolated_input?(value) valid_input?(value, GraphQL::Query::NullContext) end |
#validate_input(value, ctx = nil) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/graphql/base_type.rb', line 133 def validate_input(value, ctx = nil) if ctx.nil? warn_deprecated_coerce("validate_isolated_input") ctx = GraphQL::Query::NullContext end if value.nil? GraphQL::Query::InputValidationResult.new else validate_non_null_input(value, ctx) end end |
#validate_isolated_input(value) ⇒ Object
112 113 114 |
# File 'lib/graphql/base_type.rb', line 112 def validate_isolated_input(value) validate_input(value, GraphQL::Query::NullContext) end |