Class: GraphQL::Function
- Inherits:
-
Object
- Object
- GraphQL::Function
- Defined in:
- lib/graphql/function.rb
Overview
A reusable container for field logic, including arguments, resolve, return type, and documentation.
Class-level values defined with the DSL will be inherited, so Functions can extend one another.
It's OK to override the instance methods here in order to customize behavior of instances.
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.
-
.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
66 67 68 69 70 |
# File 'lib/graphql/function.rb', line 66 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.
73 74 75 76 77 78 79 |
# File 'lib/graphql/function.rb', line 73 def arguments if parent_function? own_arguments.merge(superclass.arguments) else own_arguments.dup end end |
.complexity(new_value = nil) ⇒ Object
Get or set this class's complexity
124 |
# File 'lib/graphql/function.rb', line 124 inherited_value(:complexity) |
.deprecation_reason(new_value = nil) ⇒ Object
Get or set this class's deprecation_reason
121 |
# File 'lib/graphql/function.rb', line 121 inherited_value(:deprecation_reason) |
.description(new_value = nil) ⇒ Object
Get or set this class's description
118 |
# File 'lib/graphql/function.rb', line 118 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
102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/graphql/function.rb', line 102 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
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/graphql/function.rb', line 88 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
82 83 84 |
# File 'lib/graphql/function.rb', line 82 def types GraphQL::Define::TypeDefiner.instance end |
Instance Method Details
#arguments ⇒ Hash<String => GraphQL::Argument>
Returns Arguments, keyed by name.
33 34 35 |
# File 'lib/graphql/function.rb', line 33 def arguments self.class.arguments end |
#call(obj, args, ctx) ⇒ Object
Returns This function's resolver.
43 44 45 |
# File 'lib/graphql/function.rb', line 43 def call(obj, args, ctx) raise NotImplementedError end |
#complexity ⇒ Integer, Proc
58 59 60 |
# File 'lib/graphql/function.rb', line 58 def complexity self.class.complexity || 1 end |
#deprecation_reason ⇒ String?
53 54 55 |
# File 'lib/graphql/function.rb', line 53 def deprecation_reason self.class.deprecation_reason end |
#description ⇒ String?
48 49 50 |
# File 'lib/graphql/function.rb', line 48 def description self.class.description end |
#type ⇒ GraphQL::BaseType
Return type
38 39 40 |
# File 'lib/graphql/function.rb', line 38 def type self.class.type end |