Sha256: f0d97eab66985c85a687c35f4545067d9b300a9516f797ff99e8f2ba4032b1d2
Contents?: true
Size: 945 Bytes
Versions: 42
Compression:
Stored size: 945 Bytes
Contents
module ActiveGraph class Paginated include Enumerable attr_reader :items, :total, :current_page def initialize(items, total, current_page) @items = items @total = total @current_page = current_page end def self.create_from(source, page, per_page, order = nil) target = source.node_var || source.identity partial = source.skip((page - 1) * per_page).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
42 entries across 42 versions & 1 rubygems