lib/rom/sql/plugin/pagination.rb in rom-sql-0.4.0.beta1 vs lib/rom/sql/plugin/pagination.rb in rom-sql-0.4.0.beta2

- old
+ new

@@ -2,21 +2,20 @@ module SQL module Plugin module Pagination class Pager include Options - include Equalizer.new(:current_page, :per_page) + include Equalizer.new(:dataset, :options) option :current_page, reader: true, default: 1 option :per_page, reader: true attr_reader :dataset - attr_reader :current_page def initialize(dataset, options = {}) - @dataset = dataset super + @dataset = dataset end def next_page num = current_page + 1 num if total_pages >= num @@ -33,14 +32,17 @@ def total_pages (total / per_page) + 1 end - def at(num, per_page = options[:per_page]) + 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((num-1)*per_page).limit(per_page), - options.merge(current_page: num, per_page: per_page) + dataset.offset((current_page-1)*per_page).limit(per_page), + current_page: current_page, per_page: per_page ) end alias_method :limit_value, :per_page end @@ -68,26 +70,23 @@ # # @return [Relation] # # @api public def page(num) - num = num.to_i - next_pager = pager.at(num) + next_pager = pager.at(dataset, num) __new__(next_pager.dataset, pager: next_pager) end # Set limit for pagination # # @example # rom.relation(:users).page(2).per_page(10) # # @api public def per_page(num) - num = num.to_i - next_pager = pager.at(pager.current_page, num) + next_pager = pager.at(dataset, pager.current_page, num) __new__(next_pager.dataset, pager: next_pager) end - end end end end