Class: GraphQL::Function

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/function.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.argument(*args, **kwargs, &block) ⇒ void

This method returns an undefined value.

Define an argument for this function & its subclasses

See Also:

  • same arguments as the `argument` definition helper

39
40
41
42
43
# File 'lib/graphql/function.rb', line 39

def argument(*args, **kwargs, &block)
  argument = GraphQL::Argument.from_dsl(*args, **kwargs, &block)
  own_arguments[argument.name] = argument
  nil
end

.argumentsHash<String => GraphQL::Argument>

Returns Arguments for this function class, including inherited arguments.

Returns:

  • (Hash<String => GraphQL::Argument>)

    Arguments for this function class, including inherited arguments


46
47
48
49
50
51
52
# File 'lib/graphql/function.rb', line 46

def arguments
  if parent_function?
    own_arguments.merge(superclass.arguments)
  else
    own_arguments.dup
  end
end

.build_field(function) ⇒ Object


73
74
75
76
77
78
79
80
81
82
83
# File 'lib/graphql/function.rb', line 73

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


109
# File 'lib/graphql/function.rb', line 109

inherited_value(:complexity)

.deprecation_reason(new_value = nil) ⇒ Object

Get or set this class's deprecation_reason


106
# File 'lib/graphql/function.rb', line 106

inherited_value(:deprecation_reason)

.description(new_value = nil) ⇒ Object

Get or set this class's description


103
# File 'lib/graphql/function.rb', line 103

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


87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/graphql/function.rb', line 87

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

Returns:


61
62
63
64
65
66
67
68
69
70
71
# File 'lib/graphql/function.rb', line 61

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

.typesObject

Provides shorthand access to GraphQL's built-in types


55
56
57
# File 'lib/graphql/function.rb', line 55

def types
  GraphQL::Define::TypeDefiner.instance
end

Instance Method Details

#argumentsHash<String => GraphQL::Argument>

Returns Arguments, keyed by name.

Returns:


6
7
8
# File 'lib/graphql/function.rb', line 6

def arguments
  self.class.arguments
end

#call(obj, args, ctx) ⇒ Object

Returns This function's resolver.

Returns:

  • (Object)

    This function's resolver

Raises:


16
17
18
# File 'lib/graphql/function.rb', line 16

def call(obj, args, ctx)
  raise GraphQL::RequiredImplementationMissingError
end

#complexityInteger, Proc

Returns:

  • (Integer, Proc)

31
32
33
# File 'lib/graphql/function.rb', line 31

def complexity
  self.class.complexity || 1
end

#deprecation_reasonString?

Returns:

  • (String, nil)

26
27
28
# File 'lib/graphql/function.rb', line 26

def deprecation_reason
  self.class.deprecation_reason
end

#descriptionString?

Returns:

  • (String, nil)

21
22
23
# File 'lib/graphql/function.rb', line 21

def description
  self.class.description
end

#typeGraphQL::BaseType

Return type

Returns:


11
12
13
# File 'lib/graphql/function.rb', line 11

def type
  self.class.type
end