Class: GraphQL::ObjectType
- Extended by:
- Define::InstanceDefinable::DeprecatedDefine
- Defined in:
- lib/graphql/object_type.rb
Instance Attribute Summary collapse
-
#fields ⇒ Hash<String => GraphQL::Field>
Map String fieldnames to their Field implementations.
-
#mutation ⇒ GraphQL::Relay::Mutation?
The mutation this object type was derived from, if it is an auto-generated payload type.
- #relay_node_type ⇒ Object
- #structural_interface_type_memberships ⇒ Object writeonly
Attributes inherited from BaseType
#ast_node, #default_relay, #default_scalar, #description, #introspection, #name
Instance Method Summary collapse
-
#all_fields ⇒ Array<GraphQL::Field>
These fields don't have instrumenation applied.
-
#get_field(field_name) ⇒ GraphQL::Field
This fields doesnt have instrumenation applied.
-
#implements(interfaces, inherit: false, **options) ⇒ Object
Declare that this object implements this interface.
-
#initialize ⇒ ObjectType
constructor
A new instance of ObjectType.
- #initialize_copy(other) ⇒ Object
- #interfaces(ctx = GraphQL::Query::NullContext) ⇒ Object
-
#interfaces=(new_interfaces) ⇒ Object
deprecated
Deprecated.
Use
implements
instead ofinterfaces
. - #kind ⇒ Object
- #resolve_type_proc ⇒ Object
Methods included from Define::InstanceDefinable::DeprecatedDefine
Methods inherited from BaseType
#==, #coerce_input, #coerce_isolated_input, #coerce_isolated_result, #coerce_result, #default_relay?, #default_scalar?, #introspection?, #list?, #non_null?, resolve_related_type, #resolve_type, #to_definition, #to_list_type, #to_non_null_type, #to_s, #type_class, #unwrap, #valid_input?, #valid_isolated_input?, #validate_input, #validate_isolated_input
Methods included from Relay::TypeExtensions
#connection_type, #define_connection, #define_edge, #edge_type
Methods included from Define::InstanceDefinable
#define, #deprecated_define, #metadata, #redefine
Methods included from Define::NonNullWithBang
Constructor Details
#initialize ⇒ ObjectType
Returns a new instance of ObjectType.
19 20 21 22 23 24 25 |
# File 'lib/graphql/object_type.rb', line 19 def initialize super @fields = {} @clean_inherited_fields = nil @structural_interface_type_memberships = [] @inherited_interface_type_memberships = [] end |
Instance Attribute Details
#fields ⇒ Hash<String => GraphQL::Field>
Returns Map String fieldnames to their Field implementations.
13 14 15 |
# File 'lib/graphql/object_type.rb', line 13 def fields @fields end |
#mutation ⇒ GraphQL::Relay::Mutation?
Returns The mutation this object type was derived from, if it is an auto-generated payload type.
19 20 21 |
# File 'lib/graphql/object_type.rb', line 19 def mutation @mutation end |
#relay_node_type ⇒ Object
10 11 12 |
# File 'lib/graphql/object_type.rb', line 10 def relay_node_type @relay_node_type end |
#structural_interface_type_memberships=(value) ⇒ Object
102 103 104 |
# File 'lib/graphql/object_type.rb', line 102 def structural_interface_type_memberships=(value) @structural_interface_type_memberships = value end |
Instance Method Details
#all_fields ⇒ Array<GraphQL::Field>
These fields don't have instrumenation applied
75 76 77 |
# File 'lib/graphql/object_type.rb', line 75 def all_fields interface_fields.merge(self.fields).values end |
#get_field(field_name) ⇒ GraphQL::Field
This fields doesnt have instrumenation applied
68 69 70 |
# File 'lib/graphql/object_type.rb', line 68 def get_field(field_name) fields[field_name] || interface_fields[field_name] end |
#implements(interfaces, inherit: false, **options) ⇒ Object
Declare that this object implements this interface. This declaration will be validated when the schema is defined.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/graphql/object_type.rb', line 83 def implements(interfaces, inherit: false, **) if !interfaces.is_a?(Array) raise ArgumentError, "`implements(interfaces)` must be an array, not #{interfaces.class} (#{interfaces})" end @clean_inherited_fields = nil type_memberships = inherit ? @inherited_interface_type_memberships : @structural_interface_type_memberships interfaces.each do |iface| iface = BaseType.(iface) if iface.is_a?(GraphQL::InterfaceType) type_memberships << iface.type_membership_class.new(iface, self, **) end end end |
#initialize_copy(other) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/graphql/object_type.rb', line 27 def initialize_copy(other) super @structural_interface_type_memberships = other.structural_interface_type_memberships.dup @inherited_interface_type_memberships = other.inherited_interface_type_memberships.dup @fields = other.fields.dup end |
#interfaces(ctx = GraphQL::Query::NullContext) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/graphql/object_type.rb', line 44 def interfaces(ctx = GraphQL::Query::NullContext) ensure_defined visible_ifaces = [] unfiltered = ctx == GraphQL::Query::NullContext [@structural_interface_type_memberships, @inherited_interface_type_memberships].each do |tms| tms.each do |type_membership| if unfiltered || type_membership.visible?(ctx) # if this is derived from a class-based object, we have to # get the `.graphql_definition` of the attached interface. visible_ifaces << GraphQL::BaseType.(type_membership.abstract_type) end end end visible_ifaces end |
#interfaces=(new_interfaces) ⇒ Object
Use implements
instead of interfaces
.
This method declares interfaces for this type AND inherits any field definitions
37 38 39 40 41 42 |
# File 'lib/graphql/object_type.rb', line 37 def interfaces=(new_interfaces) @structural_interface_type_memberships = [] @inherited_interface_type_memberships = [] @clean_inherited_fields = nil implements(new_interfaces, inherit: true) end |
#kind ⇒ Object
61 62 63 |
# File 'lib/graphql/object_type.rb', line 61 def kind GraphQL::TypeKinds::OBJECT end |
#resolve_type_proc ⇒ Object
98 99 100 |
# File 'lib/graphql/object_type.rb', line 98 def resolve_type_proc nil end |