module GraphQL::Schema::Resolver::HasPayloadType
def field_class(new_class = nil)
def field_class(new_class = nil) if new_class @field_class = new_class elsif defined?(@field_class) && @field_class @field_class else find_inherited_value(:field_class, GraphQL::Schema::Field) end end
def generate_payload_type
This value will be cached as `{.payload_type}`.
Build a subclass of {.object_class} based on `self`.
def generate_payload_type resolver_name = graphql_name resolver_fields = fields Class.new(object_class) do graphql_name("#{resolver_name}Payload") description("Autogenerated return type of #{resolver_name}") resolver_fields.each do |name, f| # Reattach the already-defined field here # (The field's `.owner` will still point to the mutation, not the object type, I think) add_field(f) end end end
def object_class(new_class = nil)
-
(Class)
-
Parameters:
-
new_class
(Class, nil
) -- Defaults to {GraphQL::Schema::Object}
def object_class(new_class = nil) if new_class @object_class = new_class else @object_class || find_inherited_value(:object_class, GraphQL::Schema::Object) end end
def payload_type(new_payload_type = nil)
-
(Class)
- The object type which this mutation returns.
Parameters:
-
new_payload_type
(Class, nil
) -- If a type definition class is provided, it will be used as the return type of the mutation field
def payload_type(new_payload_type = nil) if new_payload_type @payload_type = new_payload_type end @payload_type ||= generate_payload_type end