Sha256: 52348509d4b93f17a53ddb3e2afe0cf8bd25fcb0017edc5def270011f52c1dca

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

module Neo4j
  class Paginated
    include Enumerable
    attr_reader :items, :total, :current_page

    def initialize(items, total, current_page)
      @items, @total, @current_page = items, total, current_page
    end

    def self.create_from(source, page, per_page, order = nil)
      #partial = source.drop((page-1) * per_page).first(per_page)
      target = source.node_var
      partial = source.skip(page-1).limit(per_page)
      ordered_partial, ordered_source = if order
                                          [partial.order_by(order), source.query.with("#{target} as #{target}").pluck("COUNT(#{target})").first]
                                        else
                                          [partial, source.count]
                                        end
      Paginated.new(ordered_partial, ordered_source, page)
    end

    delegate :each, :to => :items
    delegate :pluck, :to => :items
    delegate :size, :[], :to => :items
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
neo4j-3.0.3 lib/neo4j/paginated.rb