module Pagy::MeilisearchExtra::Backend

def pagy_meilisearch(pagy_search_args, vars = {})

Return Pagy object and results
def pagy_meilisearch(pagy_search_args, vars = {})
  model, term, options = pagy_search_args
  vars                 = pagy_meilisearch_get_vars(nil, vars)
  options[:limit]      = vars[:items]
  options[:offset]     = (vars[:page] - 1) * vars[:items]
  results              = model.search(term, **options)
  vars[:count]         = results.raw_answer['nbHits']
  pagy                 = ::Pagy.new(vars)
  # with :last_page overflow we need to re-run the method in order to get the hits
  return pagy_meilisearch(pagy_search_args, vars.merge(page: pagy.page)) \
    if defined?(::Pagy::OverflowExtra) && pagy.overflow? && pagy.vars[:overflow] == :last_page
  [pagy, results]
end

def pagy_meilisearch_get_vars(_collection, vars)

the _collection argument is not available when the method is called
Sub-method called only by #pagy_meilisearch: here for easy customization of variables by overriding
def pagy_meilisearch_get_vars(_collection, vars)
  pagy_set_items_from_params(vars) if defined?(ItemsExtra)
  vars[:items] ||= DEFAULT[:items]
  vars[:page]  ||= (params[vars[:page_param] || DEFAULT[:page_param]] || 1).to_i
  vars
end