Class: GraphQL::Subscriptions::SubscriptionRoot::Extension
- Inherits:
-
GraphQL::Schema::FieldExtension
- Object
- GraphQL::Schema::FieldExtension
- GraphQL::Subscriptions::SubscriptionRoot::Extension
- Defined in:
- lib/graphql/subscriptions/subscription_root.rb
Instance Attribute Summary
Attributes inherited from GraphQL::Schema::FieldExtension
Instance Method Summary collapse
Methods inherited from GraphQL::Schema::FieldExtension
Constructor Details
This class inherits a constructor from GraphQL::Schema::FieldExtension
Instance Method Details
#after_resolve(value:, context:, object:, arguments:, **rest) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/graphql/subscriptions/subscription_root.rb', line 35 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: events << Subscriptions::Event.new( name: field.name, arguments: arguments, context: context, field: field, ) # TODO compat with non-class-based subscriptions? value elsif context.query.subscription_topic == Subscriptions::Event.serialize( field.name, 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 |