Sha256: 67165c64559af5a256374b464477e52c48ce6ecd726431e5b1caa6ace2fef09f
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
# frozen_string_literal: true module GraphQL class Subscriptions # This thing can be: # - Subscribed to by `subscription { ... }` # - Triggered by `MySchema.subscriber.trigger(name, arguments, obj)` # # An array of `Event`s are passed to `store.register(query, events)`. class Event # @return [String] Corresponds to the Subscription root field name attr_reader :name # @return [GraphQL::Query::Arguments] attr_reader :arguments # @return [GraphQL::Query::Context] attr_reader :context # @return [String] An opaque string which identifies this event, derived from `name` and `arguments` attr_reader :topic def initialize(name:, arguments:, field: nil, context: nil, scope: nil) @name = name @arguments = arguments @context = context field ||= context.field scope_val = scope || (context && field.subscription_scope && context[field.subscription_scope]) @topic = self.class.serialize(name, arguments, field, scope: scope_val) end # @return [String] an identifier for this unit of subscription def self.serialize(name, arguments, field, scope:) normalized_args = case arguments when GraphQL::Query::Arguments arguments when Hash GraphQL::Query::LiteralInput.from_arguments( arguments, field.arguments, nil, ) else raise ArgumentError, "Unexpected arguments: #{arguments}, must be Hash or GraphQL::Arguments" end sorted_h = normalized_args.to_h.sort.to_h JSON.dump([scope, name, sorted_h]) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
graphql-1.7.0 | lib/graphql/subscriptions/event.rb |