Class: ActiveGraph::Paginated

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/active_graph/paginated.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(items, total, current_page) ⇒ Paginated

Returns a new instance of Paginated.



6
7
8
9
10
# File 'lib/active_graph/paginated.rb', line 6

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

Instance Attribute Details

#current_pageObject (readonly)

Returns the value of attribute current_page.



4
5
6
# File 'lib/active_graph/paginated.rb', line 4

def current_page
  @current_page
end

#itemsObject (readonly)

Returns the value of attribute items.



4
5
6
# File 'lib/active_graph/paginated.rb', line 4

def items
  @items
end

#totalObject (readonly)

Returns the value of attribute total.



4
5
6
# File 'lib/active_graph/paginated.rb', line 4

def total
  @total
end

Class Method Details

.create_from(source, page, per_page, order = nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/active_graph/paginated.rb', line 12

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