Class: GraphQL::Relay::Mutation
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
          - Object
- GraphQL::Relay::Mutation
 show all
      - Includes:
- Define::InstanceDefinable
    - Defined in:
- lib/graphql/relay/mutation.rb,
 lib/graphql/relay/mutation/result.rb,
 lib/graphql/relay/mutation/resolve.rb,
 lib/graphql/relay/mutation/instrumentation.rb
 
  
Defined Under Namespace
  
    
      Modules: Instrumentation
    
  
    
      Classes: Resolve, Result
    
  
  Instance Attribute Summary collapse
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #define, #deprecated_define, #initialize_copy, #metadata, #redefine
  Constructor Details
  
    
  
  
    Returns a new instance of Mutation.
   
 
  
  
    | 
32
33
34
35
36
37 | # File 'lib/graphql/relay/mutation.rb', line 32
def initialize
  GraphQL::Deprecation.warn "GraphQL::Relay::Mutation will be removed from GraphQL-Ruby 2.0, use GraphQL::Schema::RelayClassicMutation instead: https://graphql-ruby.org/mutations/mutation_classes"
  @fields = {}
  @arguments = {}
  @has_generated_return_type = false
end | 
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #arguments  ⇒ Object 
  
  
    Also known as:
    input_fields
    
  
  
  
  
    | 
19
20
21 | # File 'lib/graphql/relay/mutation.rb', line 19
def arguments
  @arguments
end | 
 
    
      
      
      
  
  
    #description  ⇒ Object 
  
  
  
  
  
    | 
19
20
21 | # File 'lib/graphql/relay/mutation.rb', line 19
def description
  @description
end | 
 
    
      
      
      
  
  
    #fields  ⇒ Object 
  
  
    Also known as:
    return_fields
    
  
  
  
  
    | 
19
20
21 | # File 'lib/graphql/relay/mutation.rb', line 19
def fields
  @fields
end | 
 
    
      
      
      
  
  
    #name  ⇒ Object 
  
  
  
  
  
    | 
19
20
21 | # File 'lib/graphql/relay/mutation.rb', line 19
def name
  @name
end | 
 
    
      
      
      
  
  
    #return_interfaces  ⇒ Object 
  
  
  
  
  
    | 
63
64
65 | # File 'lib/graphql/relay/mutation.rb', line 63
def return_interfaces
  @return_interfaces ||= []
end | 
 
    
      
      
      
  
  
    #return_type  ⇒ Object 
  
  
  
  
  
    | 
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 | # File 'lib/graphql/relay/mutation.rb', line 67
def return_type
  @return_type ||= begin
    @has_generated_return_type = true
    relay_mutation = self
    GraphQL::ObjectType.define do
      name("#{relay_mutation.name}Payload")
      description("Autogenerated return type of #{relay_mutation.name}")
      field :clientMutationId, types.String, "A unique identifier for the client performing the mutation.", property: :client_mutation_id
      interfaces relay_mutation.return_interfaces
      relay_mutation.return_fields.each do |name, field_obj|
        field name, field: field_obj
      end
      mutation(relay_mutation)
    end
  end
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #field  ⇒ Object 
  
  
  
  
  
    | 
49
50
51
52
53
54
55
56
57
58
59
60
61 | # File 'lib/graphql/relay/mutation.rb', line 49
def field
  @field ||= begin
    relay_mutation = self
    field_resolve_proc = @resolve_proc
    GraphQL::Field.define do
      type(relay_mutation.return_type)
      description(relay_mutation.description)
      argument :input, !relay_mutation.input_type
      resolve(field_resolve_proc)
      mutation(relay_mutation)
    end
  end
end | 
 
    
      
  
  
    #has_generated_return_type?  ⇒ Boolean 
  
  
  
  
    | 
39
40
41
42
43 | # File 'lib/graphql/relay/mutation.rb', line 39
def has_generated_return_type?
    return_type
  @has_generated_return_type
end | 
 
    
      
  
  
  
    | 
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 | # File 'lib/graphql/relay/mutation.rb', line 84
def input_type
  @input_type ||= begin
    relay_mutation = self
    input_object_type = GraphQL::InputObjectType.define do
      name("#{relay_mutation.name}Input")
      description("Autogenerated input type of #{relay_mutation.name}")
      input_field :clientMutationId, types.String, "A unique identifier for the client performing the mutation."
      mutation(relay_mutation)
    end
    input_fields.each do |name, arg|
      input_object_type.arguments[name] = arg
    end
    input_object_type
  end
end | 
 
    
      
  
  
    #resolve=(new_resolve_proc)  ⇒ Object 
  
  
  
  
  
    | 
45
46
47 | # File 'lib/graphql/relay/mutation.rb', line 45
def resolve=(new_resolve_proc)
  @resolve_proc = new_resolve_proc
end | 
 
    
      
  
  
    #result_class  ⇒ Object 
  
  
  
  
  
    | 
101
102
103 | # File 'lib/graphql/relay/mutation.rb', line 101
def result_class
  @result_class ||= Result.define_subclass(self)
end |