Class: EventStoreClient::Client

Inherits:
Object
  • Object
show all
Includes:
Configuration
Defined in:
lib/event_store_client/client.rb

Constant Summary collapse

NoCallMethodOnSubscriber =
Class.new(StandardError)
WrongExpectedEventVersion =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Configuration

#config

Instance Attribute Details

#connectionObject

rubocop:enable Metrics/CyclomaticComplexity



58
59
60
# File 'lib/event_store_client/client.rb', line 58

def connection
  @connection
end

Instance Method Details

rubocop:disable Metrics/CyclomaticComplexity

Raises:

  • (ArgumentError)


48
49
50
51
52
53
54
55
# File 'lib/event_store_client/client.rb', line 48

def link_to(stream:, events:, options: {})
  raise ArgumentError if !stream || stream == ''
  raise ArgumentError if events.nil? || (events.is_a?(Array) && events.empty?)
  res = connection.link_to(stream, events, options: options)
  raise WrongExpectedEventVersion.new(e.message) if res.failure?

  res.success?
end

#listen(wait: false) ⇒ Object



43
44
45
# File 'lib/event_store_client/client.rb', line 43

def listen(wait: false)
  broker.call(@subscriptions, wait: wait)
end

#publish(stream:, events:, options: {}) ⇒ Object



12
13
14
15
16
# File 'lib/event_store_client/client.rb', line 12

def publish(stream:, events:, options: {})
  res = connection.append_to_stream(stream, events, options: options)
  raise WrongExpectedEventVersion.new(res.failure) if res.failure?
  res
end

#read(stream, options: {}) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/event_store_client/client.rb', line 18

def read(stream, options: {})
  if options[:all]
    connection.read_all_from_stream(stream, options: options)
  else
    connection.read(stream, options: options)
  end
end

#reset_subscriptionsObject



37
38
39
40
41
# File 'lib/event_store_client/client.rb', line 37

def reset_subscriptions
  return unless @subscriptions.respond_to?(:reset)

  @subscriptions.reset
end

#subscribe(subscriber, to: [], options: {}) ⇒ Object



26
27
28
29
# File 'lib/event_store_client/client.rb', line 26

def subscribe(subscriber, to: [], options: {})
  raise NoCallMethodOnSubscriber unless subscriber.respond_to?(:call)
  @subscriptions.create(subscriber, to, options: options)
end

#subscribe_to_all(subscriber, filter = nil) ⇒ Object



31
32
33
34
35
# File 'lib/event_store_client/client.rb', line 31

def subscribe_to_all(subscriber, filter=nil)
  raise NoCallMethodOnSubscriber unless subscriber.respond_to?(:call)

  @subscriptions.create_or_load(subscriber, filter: filter)
end