Sha256: 3178e9214f060e49a52436327d3891b9661cc6b48523b82d58849b037a3e5334
Contents?: true
Size: 1.67 KB
Versions: 3
Compression:
Stored size: 1.67 KB
Contents
module NulogyMessageBusProducer # Configuration for the gem # This is a private class, so do not use it directly. Use the methods on NulogyMessageBusProducer. class Config FAILURE_MODES = [:raise, :soft_fail].freeze attr_reader :registered_schemas def initialize(options = {}) @registered_schemas = {} producing_events_fails_with(:raise) update(options) end def register_schema(schema:, key:) @registered_schemas[key] = schema end def producing_events_fails_with(mode, &block) @event_error_handler = case mode when :raise method(:raise_handler) when :soft_fail block || ->(_) {} else unknown_mode_error(mode) end end def handle_event_generation_error(subscription_id:, context:, variables:, result:) @event_error_handler.call( subscription_id: subscription_id, context: context, variables: variables, result: result ) end def update(options = {}) options.each { |key, value| public_send("#{key}=", value) } end private def raise_handler(subscription_id:, context:, variables:, result:) raise StandardError, <<~MESSAGE A subscription event could not be produced for subscription #{subscription_id} The GraphQL engine returned this response: #{result.to_h} context: #{context.inspect} variables: #{variables.inspect} MESSAGE end def unknown_mode_error(mode) options = FAILURE_MODES.map(&:inspect).join(", ") raise ArgumentError, "The failure mode `#{mode}` is not valid. The modes are: #{options}." end end end
Version data entries
3 entries across 3 versions & 1 rubygems