Class: GraphQL::Relay::Mutation::MutationResolve

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

Instance Method Summary collapse

Constructor Details

#initialize(mutation, resolve, wrap_result:) ⇒ MutationResolve

Returns a new instance of MutationResolve.



171
172
173
174
175
# File 'lib/graphql/relay/mutation.rb', line 171

def initialize(mutation, resolve, wrap_result:)
  @mutation = mutation
  @resolve = resolve
  @wrap_result = wrap_result
end

Instance Method Details

#call(obj, args, ctx) ⇒ Object



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/graphql/relay/mutation.rb', line 177

def call(obj, args, ctx)
  mutation_result = @resolve.call(obj, args[:input], ctx)

  if mutation_result.is_a?(GraphQL::ExecutionError)
    ctx.add_error(mutation_result)
    mutation_result = nil
  end

  if ctx.schema.lazy?(mutation_result)
    @mutation.field.prepare_lazy(mutation_result, args, ctx).then { |inner_obj|
      build_result(inner_obj, args)
    }
  else
    build_result(mutation_result, args)
  end
end