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 74 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 64 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 84 def first_page? @current_page == 1 end
Returns true if the current page is the last page
# File lib/sequel/extensions/pagination.rb, line 89 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 94 def next_page current_page < page_count ? (current_page + 1) : nil end
Returns the page range
# File lib/sequel/extensions/pagination.rb, line 99 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 104 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 109 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