Class

Paginator

Paginator(adapter, query, size, clazz)

Constructor

# new Paginator(adapter, query, size, clazz)

Provides functionality for navigating through paginated query results

This abstract class manages the state and navigation of paginated database query results. It tracks the current page, total pages, and record count, and provides methods for moving between pages.

Handles pagination for database queries

sequenceDiagram participant Client participant Paginator participant Adapter participant Database Client->>Paginator: new Paginator(adapter, query, size, clazz) Client->>Paginator: page(1) Paginator->>Paginator: validatePage(1) Paginator->>Paginator: prepare(query) Paginator->>Adapter: execute query with pagination Adapter->>Database: execute query Database-->>Adapter: return results Adapter-->>Paginator: return results Paginator-->>Client: return page results Client->>Paginator: next() Paginator->>Paginator: page(current + 1) Paginator->>Paginator: validatePage(current + 1) Paginator->>Adapter: execute query with pagination Adapter->>Database: execute query Database-->>Adapter: return results Adapter-->>Paginator: return results Paginator-->>Client: return page results
Parameters:
Name Type Description
adapter Adapter.<any, Q, any, any>

The database adapter to use for executing queries

query Q

The query to paginate

size number

The number of records per page

clazz Constructor.<M>

The constructor for the model type

View Source query/Paginator.ts, line 3

Example
// Create a paginator for a user query
const userQuery = db.select().from(User);
const paginator = await userQuery.paginate(10); // 10 users per page

// Get the first page of results
const firstPage = await paginator.page(1);

// Navigate to the next page
const secondPage = await paginator.next();

// Get information about the pagination
console.log(`Page ${paginator.current} of ${paginator.total}, ${paginator.count} total records`);