:typesense_rails
:typesense_rails is a SEARCH paginator designed for Typesense::Rails results.
Ensure Typesense.configuration[:pagination_backend] == nil.
Pagy searches and paginates
You use the pagy_search method in place of the search method.
Model
extend Pagy::Search
Controller
# Get the collection in one of the following ways
search = Article.pagy_search(params[:q], to_query)
# Paginate it
@pagy, @response = pagy(:typesense_rails, search, **options)
You search and paginate
Pagy creates its object out of your result.
Controller
# Standard results (already paginated)
@results = Model.search(params[:q], to_query, { per_page: 10, page: 10, ...})
# Get the pagy object out of it
@pagy = pagy(:typesense_rails, @results, **options)
Search paginators don't query a DB, but use the same positional technique as :offset paginators, with shared options and readers.
search_method: :my_search- Customize the name of the
typesense_railsmethod to use (default:search). limit: 10- Specifies the number of items per page (default:
20) client_max_limit: 1_000Set the maximum
:limitthat the client is allowed torequest. Higher requested:limits are silently capped.IMPORTANT If falsey, the client cannot request any
:limit.page: force_page- Set it only to force the current
:page. (It is set automatically from the request param). request: request || hashPagy tries to find the
Rake::Requestatself.request. Set it only when it's not directly available in your code (e.g., Hanami, standalone app, test,...). For example:hash_request = { base_url: 'http://www.example.com', path: '/path', params: { 'param1' => 1234 }, # The string-keyed params hash from the request cookie: 'xyz' } # The 'pagy' cookie, only for keynavjsonapi: true- Enables JSON:API-compliant URLs with nested query string (e.g.,
?page[number]=2&page[size]=100). root_key: 'my_root'- Set it to enable nested URLs with nested query string
?my_root[page]=2&my_root[limit]=100)). Use it to handle multiple pagination objects in the same request. page_key: 'my_page'- Set it to change the key string used for the
:pagein URLs (default'page'). limit_key: 'my_limit'- Set it to change the key string used for the
:limitin URLs (default'limit').
offset- The OFFSET used in the SQL query
count- The collection count
from- The position in the collection of the first item on the page. (Different Pagy classes may use different value types for it).
to- The position in the collection of the last item on the page. (Different Pagy classes may use different value types for it).
last- The last page.
pages- The number of pages.
previous- The previous page
next- The next page
page- The current page
limit- The items per page
in- The actual items in the page
records- The fetched records for the current page.
optionsThe hash of options of the object