# `MishkaGervaz.Table.Web.DataLoader.PaginationHandler`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/table/web/data_loader/pagination_handler.ex#L1)

Handles pagination logic for data loading.

## Overridable Functions

- `load_page/5` - Load a specific page of data
- `get_pagination_type/1` - Get pagination type from state
- `calculate_total_pages/2` - Calculate total pages from count
- `build_page_opts/3` - Build pagination options for query

## User Override

    defmodule MyApp.Table.DataLoader.PaginationHandler do
      use MishkaGervaz.Table.Web.DataLoader.PaginationHandler

      def load_page(state, query, page, action, tenant) do
        # Custom pagination with caching
        cached_result = check_cache(state.static.resource, page)

        if cached_result do
          cached_result
        else
          result = super(state, query, page, action, tenant)
          cache_result(state.static.resource, page, result)
          result
        end
      end
    end

See `MishkaGervaz.Table.Web.DataLoader`,
`MishkaGervaz.Table.Web.DataLoader.Helpers`,
`MishkaGervaz.Table.Entities.Pagination`,
and the sibling sub-builders `QueryBuilder`, `FilterParser`,
`TenantResolver`, `HookRunner`, `RelationLoader`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
