Class: GraphQL::Schema::Object Private
- Extended by:
- Member::AcceptsDefinition, Member::HasFields
- Defined in:
- lib/graphql/schema/object.rb
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.
Direct Known Subclasses
Constant Summary
Constants included from Member::GraphQLTypeNames
Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int
Instance Attribute Summary collapse
-
#context ⇒ GraphQL::Query::Context
readonly
private
The context instance for this query.
-
#object ⇒ Object
readonly
private
The application object this type is wrapping.
Class Method Summary collapse
-
.authorized_new(object, context) ⇒ GraphQL::Schema::Object, GraphQL::Execution::Lazy
private
Make a new instance of this type if the auth check passes, otherwise, raise an error.
-
.fields ⇒ Object
private
Include legacy-style interfaces, too.
- .implements(*new_interfaces) ⇒ Object private
- .interfaces ⇒ Object private
- .kind ⇒ Object private
- .own_interfaces ⇒ Object private
- .to_graphql ⇒ GraphQL::ObjectType private
Instance Method Summary collapse
-
#initialize(object, context) ⇒ Object
constructor
private
A new instance of Object.
Methods included from Member::HasFields
add_default_resolve_module, add_field, extended, field, field_class, fields, global_id_field, included, inherited, own_fields
Methods included from Member::CachedGraphQLDefinition
#graphql_definition, #initialize_copy
Methods included from Relay::TypeExtensions
#connection_type, #define_connection, #define_edge, #edge_type
Methods included from Member::BaseDSLMethods
#accessible?, #authorized?, #description, #graphql_name, #introspection, #mutation, #name, #overridden_graphql_name, #to_graphql, #visible?
Methods included from Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Constructor Details
#initialize(object, context) ⇒ Object
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 Object.
48 49 50 51 |
# File 'lib/graphql/schema/object.rb', line 48 def initialize(object, context) @object = object @context = context end |
Instance Attribute Details
#context ⇒ GraphQL::Query::Context (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.
Returns the context instance for this query.
13 14 15 |
# File 'lib/graphql/schema/object.rb', line 13 def context @context end |
#object ⇒ Object (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.
Returns the application object this type is wrapping.
10 11 12 |
# File 'lib/graphql/schema/object.rb', line 10 def object @object end |
Class Method Details
.authorized_new(object, context) ⇒ GraphQL::Schema::Object, GraphQL::Execution::Lazy
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.
Make a new instance of this type if the auth check passes, otherwise, raise an error.
Probably only the framework should call this method.
This might return a Execution::Lazy if the user-provided .authorized?
hook returns some lazy value (like a Promise).
The reason that the auth check is in this wrapper method instead of new is because
of how it might return a Promise. It would be weird if .new
returned a promise;
It would be a headache to try to maintain Promise-y state inside a GraphQL::Schema::Object
instance. So, hopefully this wrapper method will do the job.
37 38 39 40 41 42 43 44 45 |
# File 'lib/graphql/schema/object.rb', line 37 def (object, context) context.schema.after_lazy((object, context)) do || if self.new(object, context) else raise GraphQL::UnauthorizedError.new(object: object, type: self, context: context) end end end |
.fields ⇒ Object
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.
Include legacy-style interfaces, too
75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/graphql/schema/object.rb', line 75 def fields all_fields = super interfaces.each do |int| if int.is_a?(GraphQL::InterfaceType) int_f = {} int.fields.each do |name, legacy_field| int_f[name] = field_class.(name, field: legacy_field) end all_fields = int_f.merge(all_fields) end end all_fields end |
.implements(*new_interfaces) ⇒ Object
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.
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/graphql/schema/object.rb', line 54 def implements(*new_interfaces) new_interfaces.each do |int| if int.is_a?(Module) # Include the methods here, # `.fields` will use the inheritance chain # to find inherited fields include(int) end end own_interfaces.concat(new_interfaces) end |
.interfaces ⇒ Object
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.
66 67 68 |
# File 'lib/graphql/schema/object.rb', line 66 def interfaces own_interfaces + (superclass <= GraphQL::Schema::Object ? superclass.interfaces : []) end |
.kind ⇒ Object
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.
108 109 110 |
# File 'lib/graphql/schema/object.rb', line 108 def kind GraphQL::TypeKinds::OBJECT end |
.own_interfaces ⇒ Object
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.
70 71 72 |
# File 'lib/graphql/schema/object.rb', line 70 def own_interfaces @own_interfaces ||= [] end |
.to_graphql ⇒ GraphQL::ObjectType
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.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/graphql/schema/object.rb', line 90 def to_graphql obj_type = GraphQL::ObjectType.new obj_type.name = graphql_name obj_type.description = description obj_type.interfaces = interfaces obj_type.introspection = introspection obj_type.mutation = mutation fields.each do |field_name, field_inst| field_defn = field_inst.to_graphql obj_type.fields[field_defn.name] = field_defn end obj_type.[:type_class] = self obj_type end |