Class: GraphQL::Subscriptions::DefaultSubscriptionResolveExtension
- Inherits:
-
GraphQL::Schema::FieldExtension
- Object
- GraphQL::Schema::FieldExtension
- GraphQL::Subscriptions::DefaultSubscriptionResolveExtension
- Defined in:
- lib/graphql/subscriptions/default_subscription_resolve_extension.rb
Instance Attribute Summary
Attributes inherited from GraphQL::Schema::FieldExtension
#added_default_arguments, #added_extras, #field, #options
Instance Method Summary collapse
- #after_resolve(value:, context:, object:, arguments:, **rest) ⇒ Object
- #resolve(context:, object:, arguments:) ⇒ Object
Methods inherited from GraphQL::Schema::FieldExtension
#after_define, #after_define_apply, #apply, default_argument, default_argument_configurations, extras, #initialize
Constructor Details
This class inherits a constructor from GraphQL::Schema::FieldExtension
Instance Method Details
#after_resolve(value:, context:, object:, arguments:, **rest) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/graphql/subscriptions/default_subscription_resolve_extension.rb', line 20 def after_resolve(value:, context:, object:, arguments:, **rest) if value.is_a?(GraphQL::ExecutionError) value elsif (events = context.namespace(:subscriptions)[:events]) # This is the first execution, so gather an Event # for the backend to register: event = Subscriptions::Event.new( name: field.name, arguments: arguments_without_field_extras(arguments: arguments), context: context, field: field, ) events << event value elsif context.query.subscription_topic == Subscriptions::Event.serialize( field.name, arguments_without_field_extras(arguments: arguments), field, scope: (field.subscription_scope ? context[field.subscription_scope] : nil), ) # This is a subscription update. The resolver returned `skip` if it should be skipped, # or else it returned an object to resolve the update. value else # This is a subscription update, but this event wasn't triggered. context.skip end end |
#resolve(context:, object:, arguments:) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/graphql/subscriptions/default_subscription_resolve_extension.rb', line 5 def resolve(context:, object:, arguments:) has_override_implementation = @field.resolver || object.respond_to?(@field.resolver_method) if !has_override_implementation if context.query.subscription_update? object.object else context.skip end else yield(object, arguments) end end |