module Lucky::Paginator::BackendHelpers
Defined in:
lucky/paginator/backend_helpers.crlucky_avram/ext/lucky/paginator/backend_helpers.cr
Instance Method Summary
- 
        #paginate(query : Avram::Queryable(T), per_page : Int32 = paginator_per_page) : Tuple(Paginator, Avram::Queryable(T)) forall T
        
          
Call this in your actions to paginate an query.
 - 
        #paginate_array(items : Array(T), per_page : Int32 = paginator_per_page) : Tuple(Paginator, Array(T)) forall T
        
          
Call this in your actions to paginate an array.
 - 
        #paginator_page : Int32
        
          
Returns the page that was request, or
1 - 
        #paginator_per_page : Int32
        
          
The number of records to display per page.
 
Instance Method Detail
Call this in your actions to paginate an query.
This method will return a Lucky::Paginator object and the requested page
of records.
Examples
class Users::Index < BrowserAction
  get "/users" do
    # The 'UserQuery' will return just the records for the requested page
    # because 'paginate' will add a 'limit' and 'offset' to the query.
    pages, users = paginate(UserQuery.new)
    render IndexPage, pages: pages, users: users
  end
end
class Users::IndexPage < MainLayout
  needs pages : Lucky::Paginator
  needs users : UserQuery
  def content
    # Render 'users' like normal
    mount Lucky::Paginator::SimpleNav, @pages
  end
end
        Call this in your actions to paginate an array.
This method will return a Lucky::Paginator object and the requested page
of items.
Examples
class ListItems::Index < BrowserAction
  get "/items" do
    # The 'Array' will just show items for the requested page
    pages, items = paginate_array([1, 2, 3])
    render IndexPage, pages: pages, items: items
  end
end
class Users::IndexPage < MainLayout
  needs pages : Lucky::Paginator
  needs items : Array(Int32)
  def content
    # Render pagination links for the 'items' Array
    mount Lucky::Paginator::SimpleNav, @pages
  end
end
        Returns the page that was request, or 1
By default this method looks for a page param. It can be given as a
query param, or in the body. If no page param is given the page will be 1.
You can override this method in your action in any way you'd like.
Example
abstract class ApiAction < Lucky::Action
  include Lucky::Paginator::BackendHelpers
  def paginator_page : Int32
    # Will use the "Page" header or fallback to default if missing.
    request.headers["Page"]? || super
  end
end
        The number of records to display per page. Defaults to 25
You can override this in your actions
Example
abstract class BrowserAction < Lucky::Action
  include Lucky::Paginator::BackendHelpers
  # Set to a new static value
  def paginator_per_page : Int32
    50 # defaults to 25
  end
  # Or you could allow setting the number from a param
  def paginator_per_page : Int32
    params.get?(:per_page).try(&.to_i) || 25
  end
end