Class: GraphQL::Function
- Inherits:
-
Object
- Object
- GraphQL::Function
- Defined in:
- lib/graphql/function.rb
Class Method Summary collapse
-
.argument(*args, **kwargs, &block) ⇒ void
Define an argument for this function & its subclasses.
-
.arguments ⇒ Hash<String => GraphQL::Argument>
Arguments for this function class, including inherited arguments.
- .build_field(function) ⇒ Object
-
.complexity(new_value = nil) ⇒ Object
Get or set this class's complexity.
-
.deprecation_reason(new_value = nil) ⇒ Object
Get or set this class's deprecation_reason.
-
.description(new_value = nil) ⇒ Object
Get or set this class's description.
-
.inherited_value(name) ⇒ Object
private
Class-level reader/writer which is inherited.
-
.type(premade_type = nil, &block) ⇒ GraphQL::BaseType
Get or set the return type for this function class & descendants.
-
.types ⇒ Object
Provides shorthand access to GraphQL's built-in types.
Instance Method Summary collapse
-
#arguments ⇒ Hash<String => GraphQL::Argument>
Arguments, keyed by name.
-
#call(obj, args, ctx) ⇒ Object
This function's resolver.
- #complexity ⇒ Integer, Proc
- #deprecation_reason ⇒ String?
- #description ⇒ String?
-
#type ⇒ GraphQL::BaseType
Return type.
Class Method Details
.argument(*args, **kwargs, &block) ⇒ void
This method returns an undefined value.
Define an argument for this function & its subclasses
43 44 45 46 47 |
# File 'lib/graphql/function.rb', line 43 def argument(*args, **kwargs, &block) argument = GraphQL::Argument.from_dsl(*args, **kwargs, &block) own_arguments[argument.name] = argument nil end |
.arguments ⇒ Hash<String => GraphQL::Argument>
Returns Arguments for this function class, including inherited arguments.
50 51 52 53 54 55 56 |
# File 'lib/graphql/function.rb', line 50 def arguments if parent_function? own_arguments.merge(superclass.arguments) else own_arguments.dup end end |
.build_field(function) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/graphql/function.rb', line 77 def build_field(function) GraphQL::Field.define( arguments: function.arguments, complexity: function.complexity, type: function.type, resolve: function, description: function.description, function: function, deprecation_reason: function.deprecation_reason, ) end |
.complexity(new_value = nil) ⇒ Object
Get or set this class's complexity
113 |
# File 'lib/graphql/function.rb', line 113 inherited_value(:complexity) |
.deprecation_reason(new_value = nil) ⇒ Object
Get or set this class's deprecation_reason
110 |
# File 'lib/graphql/function.rb', line 110 inherited_value(:deprecation_reason) |
.description(new_value = nil) ⇒ Object
Get or set this class's description
107 |
# File 'lib/graphql/function.rb', line 107 inherited_value(:description) |
.inherited_value(name) ⇒ 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.
Class-level reader/writer which is inherited
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/graphql/function.rb', line 91 def self.inherited_value(name) self.class_eval <<-RUBY def #{name}(new_value = nil) if new_value @#{name} = new_value elsif parent_function? @#{name} || superclass.#{name} else @#{name} end end RUBY end |
.type(premade_type = nil, &block) ⇒ GraphQL::BaseType
Get or set the return type for this function class & descendants
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/graphql/function.rb', line 65 def type(premade_type = nil, &block) if block_given? @type = GraphQL::ObjectType.define(&block) elsif premade_type @type = premade_type elsif parent_function? @type || superclass.type else @type end end |
.types ⇒ Object
Provides shorthand access to GraphQL's built-in types
59 60 61 |
# File 'lib/graphql/function.rb', line 59 def types GraphQL::Define::TypeDefiner.instance end |
Instance Method Details
#arguments ⇒ Hash<String => GraphQL::Argument>
Returns Arguments, keyed by name.
10 11 12 |
# File 'lib/graphql/function.rb', line 10 def arguments self.class.arguments end |
#call(obj, args, ctx) ⇒ Object
Returns This function's resolver.
20 21 22 |
# File 'lib/graphql/function.rb', line 20 def call(obj, args, ctx) raise GraphQL::RequiredImplementationMissingError end |
#complexity ⇒ Integer, Proc
35 36 37 |
# File 'lib/graphql/function.rb', line 35 def complexity self.class.complexity || 1 end |
#deprecation_reason ⇒ String?
30 31 32 |
# File 'lib/graphql/function.rb', line 30 def deprecation_reason self.class.deprecation_reason end |
#description ⇒ String?
25 26 27 |
# File 'lib/graphql/function.rb', line 25 def description self.class.description end |
#type ⇒ GraphQL::BaseType
Return type
15 16 17 |
# File 'lib/graphql/function.rb', line 15 def type self.class.type end |