Class: GraphQL::Schema::Directive::Transform
- Inherits:
-
GraphQL::Schema::Directive
- Object
- Member
- GraphQL::Schema::Directive
- GraphQL::Schema::Directive::Transform
- Defined in:
- lib/graphql/schema/directive/transform.rb
Overview
An example directive to show how you might interact with the runtime.
This directive takes the return value of the tagged part of the query, and if the named transform is whitelisted and applies to the return value, it’s applied by calling a method with that name.
Constant Summary collapse
- TRANSFORMS =
[ "upcase", "downcase", # ?? ]
Constants inherited from GraphQL::Schema::Directive
DEFAULT_DEPRECATION_REASON, LOCATIONS, LOCATION_DESCRIPTIONS
Constants included from Member::GraphQLTypeNames
Member::GraphQLTypeNames::Boolean, Member::GraphQLTypeNames::ID, Member::GraphQLTypeNames::Int
Class Method Summary collapse
-
.resolve(object, arguments, context) ⇒ Object
Implement the Directive API.
Methods inherited from GraphQL::Schema::Directive
default_directive, default_graphql_name, include?, locations, to_graphql
Methods included from Member::HasArguments
#add_argument, #argument, #argument_class, #argument_with_loads, #arguments, #own_arguments
Methods included from Member::HasPath
Methods included from Member::RelayShortcuts
#connection_type, #connection_type_class, #edge_type, #edge_type_class
Methods included from Member::Scoped
Methods included from Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Methods included from Member::BaseDSLMethods
#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #to_graphql, #visible?
Methods included from Relay::TypeExtensions
#connection_type, #define_connection, #define_edge, #edge_type
Methods included from Member::CachedGraphQLDefinition
#graphql_definition, #initialize_copy
Class Method Details
.resolve(object, arguments, context) ⇒ Object
Implement the Directive API
36 37 38 39 40 41 42 43 44 |
# File 'lib/graphql/schema/directive/transform.rb', line 36 def self.resolve(object, arguments, context) path = context.namespace(:interpreter)[:current_path] return_value = yield transform_name = arguments[:by] if TRANSFORMS.include?(transform_name) && return_value.respond_to?(transform_name) return_value = return_value.public_send(transform_name) context.namespace(:interpreter)[:runtime].write_in_response(path, return_value) end end |