Module: Sequel::Dataset::Pagination
- Defined in:
- lib/sequel/extensions/pagination.rb
Overview
Holds methods that only relate to paginated datasets. Paginated dataset have pages starting at 1 (page 1 is offset 0, page 1 is offset page_size).
Instance Method Summary collapse
-
#current_page ⇒ Object
The current page of the dataset, starting at 1 and not 0.
-
#current_page_record_count ⇒ Object
Returns the number of records in the current page.
-
#current_page_record_range ⇒ Object
Returns the record range for the current page.
-
#first_page? ⇒ Boolean
Returns true if the current page is the first page.
-
#last_page? ⇒ Boolean
Returns true if the current page is the last page.
-
#next_page ⇒ Object
Returns the next page number or nil if the current page is the last page.
-
#page_count ⇒ Object
The number of pages in the dataset before pagination, of which this paginated dataset is one.
-
#page_range ⇒ Object
Returns the page range.
-
#page_size ⇒ Object
The number of records per page (the final page may have fewer than this number of records).
-
#pagination_record_count ⇒ Object
The total number of records in the dataset before pagination.
-
#prev_page ⇒ Object
Returns the previous page number or nil if the current page is the first.
-
#set_pagination_info(page_no, page_size, record_count) ⇒ Object
SEQUEL5: Remove :nocov:.
Instance Method Details
#current_page ⇒ Object
The current page of the dataset, starting at 1 and not 0.
85 86 87 |
# File 'lib/sequel/extensions/pagination.rb', line 85 def current_page @opts[:current_page] end |
#current_page_record_count ⇒ Object
Returns the number of records in the current page
105 106 107 108 109 110 111 112 |
# File 'lib/sequel/extensions/pagination.rb', line 105 def current_page_record_count return 0 if current_page > page_count a = 1 + (current_page - 1) * page_size b = a + page_size - 1 b = pagination_record_count if b > pagination_record_count b - a + 1 end |
#current_page_record_range ⇒ Object
Returns the record range for the current page
95 96 97 98 99 100 101 102 |
# File 'lib/sequel/extensions/pagination.rb', line 95 def current_page_record_range return (0..0) if current_page > page_count a = 1 + (current_page - 1) * page_size b = a + page_size - 1 b = pagination_record_count if b > pagination_record_count a..b end |
#first_page? ⇒ Boolean
Returns true if the current page is the first page
115 116 117 |
# File 'lib/sequel/extensions/pagination.rb', line 115 def first_page? current_page == 1 end |
#last_page? ⇒ Boolean
Returns true if the current page is the last page
120 121 122 |
# File 'lib/sequel/extensions/pagination.rb', line 120 def last_page? current_page == page_count end |
#next_page ⇒ Object
Returns the next page number or nil if the current page is the last page
125 126 127 |
# File 'lib/sequel/extensions/pagination.rb', line 125 def next_page current_page < page_count ? (current_page + 1) : nil end |
#page_count ⇒ Object
The number of pages in the dataset before pagination, of which this paginated dataset is one. Empty datasets are considered to have a single page.
80 81 82 |
# File 'lib/sequel/extensions/pagination.rb', line 80 def page_count @opts[:page_count] end |
#page_range ⇒ Object
Returns the page range
130 131 132 |
# File 'lib/sequel/extensions/pagination.rb', line 130 def page_range 1..page_count end |
#page_size ⇒ Object
The number of records per page (the final page may have fewer than this number of records).
73 74 75 |
# File 'lib/sequel/extensions/pagination.rb', line 73 def page_size @opts[:page_size] end |
#pagination_record_count ⇒ Object
The total number of records in the dataset before pagination.
90 91 92 |
# File 'lib/sequel/extensions/pagination.rb', line 90 def pagination_record_count @opts[:pagination_record_count] end |
#prev_page ⇒ Object
Returns the previous page number or nil if the current page is the first
135 136 137 |
# File 'lib/sequel/extensions/pagination.rb', line 135 def prev_page current_page > 1 ? (current_page - 1) : nil end |
#set_pagination_info(page_no, page_size, record_count) ⇒ Object
SEQUEL5: Remove :nocov:
141 142 143 144 145 146 147 148 149 150 |
# File 'lib/sequel/extensions/pagination.rb', line 141 def set_pagination_info(page_no, page_size, record_count) Sequel::Deprecation.deprecate("Dataset#set_pagination_info", "It should no longer be necessary to call this method") self.current_page = page_no self.page_size = page_size self.pagination_record_count = record_count page_count = (record_count / page_size.to_f).ceil page_count = 1 if page_count == 0 self.page_count = page_count self end |