class RubyEventStore::Browser::GetEventsFromStream

Constants

Attributes

event_store[R]
params[R]
routing[R]

Public Class Methods

new(event_store:, params:, routing:) click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 10
def initialize(event_store:, params:, routing:)
  @event_store = event_store
  @params      = params
  @routing = routing
end

Public Instance Methods

as_json() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 16
def as_json
  {
    data:  events.map { |e| JsonApiEvent.new(e, nil).to_h },
    links: links
  }
end
count() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 86
def count
  Integer(pagination_param[:count] || PAGE_SIZE)
end
direction() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 90
def direction
  case pagination_param[:direction]
  when "forward"
    :forward
  else
    :backward
  end
end
events() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 23
def events
  @events ||= case direction
              when :forward
                events_forward(position).reverse
              when :backward
                events_backward(position)
              end
end
events_backward(position) click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 53
def events_backward(position)
  spec = event_store.read.limit(count).backward
  spec = spec.stream(stream_name) unless stream_name.eql?(SERIALIZED_GLOBAL_STREAM_NAME)
  spec = spec.from(position)      unless position.equal?(HEAD)
  spec.to_a
end
events_forward(position) click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 46
def events_forward(position)
  spec = event_store.read.limit(count)
  spec = spec.stream(stream_name) unless stream_name.eql?(SERIALIZED_GLOBAL_STREAM_NAME)
  spec = spec.from(position)      unless position.equal?(HEAD)
  spec.to_a
end
next_event?() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 60
def next_event?
  return if events.empty?
  events_backward(events.last.event_id).any?
end
pagination_param() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 112
def pagination_param
  params[:page] || {}
end
position() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 99
def position
  case pagination_param[:position]
  when "head", nil
    HEAD
  else
    pagination_param.fetch(:position)
  end
end
prev_event?() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 65
def prev_event?
  return if events.empty?
  events_forward(events.first.event_id).any?
end
stream_name() click to toggle source
# File lib/ruby_event_store/browser/get_events_from_stream.rb, line 108
def stream_name
  params.fetch(:id)
end