module Elasticsearch::Model::Response::Pagination::Kaminari
Allow models to be paginated with the “kaminari” gem [github.com/amatsuda/kaminari]
Public Class Methods
included(base)
click to toggle source
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 28 def self.included(base) # Include the Kaminari configuration and paging method in response # base.__send__ :include, ::Kaminari::ConfigurationMethods::ClassMethods base.__send__ :include, ::Kaminari::PageScopeMethods # Include the Kaminari paging methods in results and records # Elasticsearch::Model::Response::Results.__send__ :include, ::Kaminari::ConfigurationMethods::ClassMethods Elasticsearch::Model::Response::Results.__send__ :include, ::Kaminari::PageScopeMethods Elasticsearch::Model::Response::Records.__send__ :include, ::Kaminari::PageScopeMethods Elasticsearch::Model::Response::Results.__send__ :delegate, :limit_value, :offset_value, :total_count, :max_pages, to: :response Elasticsearch::Model::Response::Records.__send__ :delegate, :limit_value, :offset_value, :total_count, :max_pages, to: :response base.class_eval <<-RUBY, __FILE__, __LINE__ + 1 # Define the `page` Kaminari method # def #{::Kaminari.config.page_method_name}(num=nil) @results = nil @records = nil @response = nil @page = [num.to_i, 1].max @per_page ||= __default_per_page self.search.definition.update size: @per_page, from: @per_page * (@page - 1) self end RUBY end
Public Instance Methods
__default_per_page()
click to toggle source
Returns the models's `per_page` value or the default
@api private
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 119 def __default_per_page klass.respond_to?(:default_per_page) && klass.default_per_page || ::Kaminari.config.default_per_page end
limit(value)
click to toggle source
Set the “limit” (`size`) value
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 85 def limit(value) return self if value.to_i <= 0 @results = nil @records = nil @response = nil @per_page = value.to_i search.definition.update :size => @per_page search.definition.update :from => @per_page * (@page - 1) if @page self end
limit_value()
click to toggle source
Returns the current “limit” (`size`) value
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 63 def limit_value case when search.definition[:size] search.definition[:size] else __default_per_page end end
offset(value)
click to toggle source
Set the “offset” (`from`) value
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 99 def offset(value) return self if value.to_i < 0 @results = nil @records = nil @response = nil @page = nil search.definition.update :from => value.to_i self end
offset_value()
click to toggle source
Returns the current “offset” (`from`) value
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 74 def offset_value case when search.definition[:from] search.definition[:from] else 0 end end
total_count()
click to toggle source
Returns the total number of results
# File lib/elasticsearch/model/response/pagination/kaminari.rb, line 111 def total_count results.total end