Class: GraphQL::Relay::Mutation
Overview
Define a Relay mutation:
- give it a name (used for derived inputs & outputs)
- declare its inputs
- declare its outputs
- declare the mutation procedure
resolve
should return a hash with a key for each of the return_field
s
Inputs may also contain a clientMutationId
Defined Under Namespace
Classes: MutationResolve, Result
Instance Method Summary
collapse
#define, #metadata, #redefine
Constructor Details
Returns a new instance of Mutation.
65
66
67
68
69
|
# File 'lib/graphql/relay/mutation.rb', line 65
def initialize
@fields = {}
@arguments = {}
@has_generated_return_type = false
end
|
Instance Method Details
#field ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/graphql/relay/mutation.rb', line 82
def field
@field ||= begin
ensure_defined
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
71
72
73
74
75
|
# File 'lib/graphql/relay/mutation.rb', line 71
def has_generated_return_type?
return_type
@has_generated_return_type
end
|
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/graphql/relay/mutation.rb', line 114
def input_type
@input_type ||= begin
ensure_defined
relay_mutation = self
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."
relay_mutation.input_fields.each do |input_field_name, field_obj|
input_field input_field_name, field_obj.type, field_obj.description, default_value: field_obj.default_value
end
mutation(relay_mutation)
end
end
end
|
#resolve=(new_resolve_proc) ⇒ Object
77
78
79
80
|
# File 'lib/graphql/relay/mutation.rb', line 77
def resolve=(new_resolve_proc)
ensure_defined
@resolve_proc = MutationResolve.new(self, new_resolve_proc, wrap_result: has_generated_return_type?)
end
|
#result_class ⇒ Object
130
131
132
133
134
135
|
# File 'lib/graphql/relay/mutation.rb', line 130
def result_class
@result_class ||= begin
ensure_defined
Result.define_subclass(self)
end
end
|
#return_type ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/graphql/relay/mutation.rb', line 97
def return_type
ensure_defined
@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
relay_mutation.return_fields.each do |name, field_obj|
field name, field: field_obj
end
mutation(relay_mutation)
end
end
end
|