Sha256: b5ea2aa790828966594d7037824bc82a64ad395948ecff84ae154b8932987e41

Contents?: true

Size: 670 Bytes

Versions: 12

Compression:

Stored size: 670 Bytes

Contents

require_relative './event'

module EsReadModel

  class Page

    def initialize(body)
      @body = body
    end

    def first_event_uri
      find_link('last')
    end

    def newer_events_uri
      find_link('previous')
    end

    def empty?
      @body['entries'].nil? || @body['entries'].empty?
    end

    def each_event(&block)
      @body['entries']
        .reverse!
        .map {|e| Event.load_from(e)}
        .compact
        .select {|e| e.type !~ /^\$/ }
        .each {|e| yield e }
    end

    private

    def find_link(rel)
      link = @body['links'].detect { |l| l['relation'] == rel }
      link.nil? ? nil : link['uri']
    end

  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
es-readmodel-1.0.2 lib/es_readmodel/page.rb
es-readmodel-1.0.1 lib/es_readmodel/page.rb
es-readmodel-1.0.0 lib/es_readmodel/page.rb
es-readmodel-0.1.0 lib/es_readmodel/page.rb
es-readmodel-0.0.10 lib/es_readmodel/page.rb
es-readmodel-0.0.9 lib/es_readmodel/page.rb
es-readmodel-0.0.8 lib/es_readmodel/page.rb
es-readmodel-0.0.7 lib/es_readmodel/page.rb
es-readmodel-0.0.6 lib/es_readmodel/page.rb
es-readmodel-0.0.5 lib/es_readmodel/page.rb
es-readmodel-0.0.4 lib/es_readmodel/page.rb
es-readmodel-0.0.1 lib/es_readmodel/page.rb