module Sequel::Dataset::Pagination
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).
Attributes
The current page of the dataset, starting at 1 and not 0.
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.
The number of records per page (the final page may have fewer than this number of records).
The total number of records in the dataset before pagination.
Public Instance Methods
Returns the number of records in the current page
# File lib/sequel/extensions/pagination.rb, line 86 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
Returns the record range for the current page
# File lib/sequel/extensions/pagination.rb, line 76 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
Returns true if the current page is the first page
# File lib/sequel/extensions/pagination.rb, line 96 def first_page? @current_page == 1 end
Returns true if the current page is the last page
# File lib/sequel/extensions/pagination.rb, line 101 def last_page? @current_page == @page_count end
Returns the next page number or nil if the current page is the last page
# File lib/sequel/extensions/pagination.rb, line 106 def next_page current_page < page_count ? (current_page + 1) : nil end
Returns the page range
# File lib/sequel/extensions/pagination.rb, line 111 def page_range 1..page_count end
Returns the previous page number or nil if the current page is the first
# File lib/sequel/extensions/pagination.rb, line 116 def prev_page current_page > 1 ? (current_page - 1) : nil end
Sets the pagination info for this paginated dataset, and returns self.
# File lib/sequel/extensions/pagination.rb, line 121 def set_pagination_info(page_no, page_size, record_count) @current_page = page_no @page_size = page_size @pagination_record_count = record_count @page_count = (record_count / page_size.to_f).ceil @page_count = 1 if @page_count == 0 self end