Class: RubyEventStore::Browser::GetEventsFromStream

Inherits:
Struct
  • Object
show all
Defined in:
lib/ruby_event_store/browser/get_events_from_stream.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(event_store:, stream_name:, page:) ⇒ GetEventsFromStream

Returns a new instance of GetEventsFromStream.



7
8
9
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 7

def initialize(event_store:, stream_name:, page:)
  super(event_store: event_store, stream_name: stream_name, page: page || {})
end

Instance Attribute Details

#event_storeObject

Returns the value of attribute event_store

Returns:

  • (Object)

    the current value of event_store



5
6
7
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 5

def event_store
  @event_store
end

#pageObject

Returns the value of attribute page

Returns:

  • (Object)

    the current value of page



5
6
7
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 5

def page
  @page
end

#stream_nameObject

Returns the value of attribute stream_name

Returns:

  • (Object)

    the current value of stream_name



5
6
7
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 5

def stream_name
  @stream_name
end

Instance Method Details

#countObject



36
37
38
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 36

def count
  Integer(page["count"] || PAGE_SIZE)
end

#eventsObject



11
12
13
14
15
16
17
18
19
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 11

def events
  @events ||=
    case direction
    when :forward
      read(event_store.read, position).reverse
    when :backward
      read(event_store.read.backward, position)
    end
end

#paginationObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruby_event_store/browser/get_events_from_stream.rb', line 21

def pagination
  found = events
  {}.tap do |h|
    if prev_event?(found)
      h[:prev] = { position: found.first.event_id, direction: :forward }
      h[:first] = { position: :head, direction: :backward }
    end

    if next_event?(found)
      h[:next] = { position: found.last.event_id, direction: :backward }
      h[:last] = { position: :head, direction: :forward }
    end
  end
end