class SandthornSequelProjection::Cursor

Attributes

batch_size[R]
last_sequence_number[R]

Public Class Methods

new( after_sequence_number: 0, event_store: SandthornSequelProjection.default_event_store, batch_size: SandthornSequelProjection.batch_size) click to toggle source
# File lib/sandthorn_sequel_projection/cursor.rb, line 6
def initialize(
    after_sequence_number: 0,
    event_store: SandthornSequelProjection.default_event_store,
    batch_size: SandthornSequelProjection.batch_size)
  @last_sequence_number = after_sequence_number
  @batch_size = batch_size
  @event_store = event_store
end

Public Instance Methods

get_batch() click to toggle source
# File lib/sandthorn_sequel_projection/cursor.rb, line 15
def get_batch
  events = get_events
  events.tap do |events|
    if last_event = events.last
      @last_sequence_number = last_event[:sequence_number]
    end
  end
end

Private Instance Methods

get_event_array() click to toggle source
# File lib/sandthorn_sequel_projection/cursor.rb, line 34
def get_event_array
  @event_store.get_events(after_sequence_number: last_sequence_number, take: batch_size)
end
get_events() click to toggle source
# File lib/sandthorn_sequel_projection/cursor.rb, line 26
def get_events
  wrap(get_event_array)
end
wrap(events) click to toggle source
# File lib/sandthorn_sequel_projection/cursor.rb, line 30
def wrap(events)
  SandthornEventFilter.filter(events)
end