Class: EventStoreClient::StoreAdapter::Api::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/event_store_client/store_adapter/api/client.rb

Instance Method Summary collapse

Instance Method Details

#ack(url) ⇒ Object



68
69
70
# File 'lib/event_store_client/store_adapter/api/client.rb', line 68

def ack(url)
  make_request(:post, url)
end

#append_to_stream(stream_name, events, expected_version: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/event_store_client/store_adapter/api/client.rb', line 7

def append_to_stream(stream_name, events, expected_version: nil)
  headers = {
    'ES-ExpectedVersion' => expected_version.to_s
  }.reject { |_key, val| val.empty? }

  data = [events].flatten.map do |event|
    {
      eventId: event.id,
      eventType: event.type,
      data: event.data,
      metadata: event.
    }
  end

  make_request(:post, "/streams/#{stream_name}", body: data, headers: headers)
end

#consume_feed(stream_name, subscription_name, start: 0, count: 1, long_pool: 0) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/event_store_client/store_adapter/api/client.rb', line 51

def consume_feed(
  stream_name,
  subscription_name,
  start: 0,
  count: 1,
  long_pool: 0
)
  headers = long_pool > 0 ? { "ES-LongPoll" => "#{long_pool}" } : {}
  headers['Content-Type'] = 'application/vnd.eventstore.competingatom+json'
  headers['Accept'] = 'application/vnd.eventstore.competingatom+json'
  make_request(
  :get,
    "/subscriptions/#{stream_name}/#{subscription_name}/#{count}",
    headers: headers
  )
end

#delete_stream(stream_name, hard_delete) ⇒ Object



24
25
26
27
# File 'lib/event_store_client/store_adapter/api/client.rb', line 24

def delete_stream(stream_name, hard_delete)
  headers = JSON_HEADERS.merge('ES-HardDelete' => hard_delete.to_s)
  make_request(:delete, "/streams/#{stream_name}", {}, headers)
end

#read(stream_name, direction: 'forward', start: 0, count: per_page) ⇒ Object



29
30
31
# File 'lib/event_store_client/store_adapter/api/client.rb', line 29

def read(stream_name, direction: 'forward', start: 0, count: per_page)
  make_request(:get, "/streams/#{stream_name}/#{start}/#{direction}/#{count}")
end

#subscribe_to_stream(stream_name, subscription_name, stats: true, start_from: 0, retries: 5) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/event_store_client/store_adapter/api/client.rb', line 33

def subscribe_to_stream(
  stream_name, subscription_name, stats: true, start_from: 0, retries: 5
)
  make_request(
    :put,
    "/subscriptions/#{stream_name}/#{subscription_name}",
    body: {
      extraStatistics: stats,
      startFrom: start_from,
      maxRetryCount: retries,
      resolveLinkTos: true
    },
    headers: {
      "Content-Type" => "application/json"
    }
  )
end