Sha256: 3818264c8460a43866b00566ba3f07864a3260d5ff9e7421cf75ec35fa7b8991

Contents?: true

Size: 887 Bytes

Versions: 5

Compression:

Stored size: 887 Bytes

Contents

module SandthornSequelProjection
  class Cursor

    attr_reader :last_sequence_number, :batch_size

    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

    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
    
    def get_events
      wrap(get_event_array)
    end

    def wrap(events)
      SandthornEventFilter.filter(events)
    end

    def get_event_array
      @event_store.get_events(after_sequence_number: last_sequence_number, take: batch_size)
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sandthorn_sequel_projection-0.1.0 lib/sandthorn_sequel_projection/cursor.rb
sandthorn_sequel_projection-0.0.4 lib/sandthorn_sequel_projection/cursor.rb
sandthorn_sequel_projection-0.0.3 lib/sandthorn_sequel_projection/cursor.rb
sandthorn_sequel_projection-0.0.2 lib/sandthorn_sequel_projection/cursor.rb
sandthorn_sequel_projection-0.0.1 lib/sandthorn_sequel_projection/cursor.rb