Class: ROM::SQL::Plugin::Pagination::Pager

Inherits:
Object
  • Object
show all
Extended by:
Initializer
Defined in:
lib/rom/sql/plugin/pagination.rb

Overview

Pager object provides the underlying pagination API for relations

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#current_pageInteger (readonly)

Returns Current page number.

Returns:

  • (Integer)

    Current page number



23
# File 'lib/rom/sql/plugin/pagination.rb', line 23

option :current_page, default: -> { 1 }

#datasetSequel::Dataset (readonly)

Returns Relation’s dataset.

Returns:

  • (Sequel::Dataset)

    Relation’s dataset



19
# File 'lib/rom/sql/plugin/pagination.rb', line 19

param :dataset

#per_pageInteger (readonly) Also known as: limit_value

Returns Current per-page number.

Returns:

  • (Integer)

    Current per-page number



27
# File 'lib/rom/sql/plugin/pagination.rb', line 27

option :per_page

Instance Method Details

#at(dataset, current_page, per_page = self.per_page) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



76
77
78
79
80
81
82
83
84
# File 'lib/rom/sql/plugin/pagination.rb', line 76

def at(dataset, current_page, per_page = self.per_page)
  current_page = current_page.to_i
  per_page = per_page.to_i

  self.class.new(
    dataset.offset((current_page-1)*per_page).limit(per_page),
    current_page: current_page, per_page: per_page
  )
end

#next_pageInteger

Return next page number

Examples:

users.page(2).pager.next_page
# => 3

Returns:

  • (Integer)


38
39
40
41
# File 'lib/rom/sql/plugin/pagination.rb', line 38

def next_page
  num = current_page + 1
  num if total_pages >= num
end

#prev_pageInteger

Return previous page number

Examples:

users.page(2).pager.prev_page
# => 1

Returns:

  • (Integer)


52
53
54
55
# File 'lib/rom/sql/plugin/pagination.rb', line 52

def prev_page
  num = current_page - 1
  num if num > 0
end

#totalInteger

Return total number of tuples

Returns:

  • (Integer)


62
63
64
# File 'lib/rom/sql/plugin/pagination.rb', line 62

def total
  dataset.unlimited.count
end

#total_pagesInteger

Return total number of pages

Returns:

  • (Integer)


71
72
73
# File 'lib/rom/sql/plugin/pagination.rb', line 71

def total_pages
  (total / per_page.to_f).ceil
end