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 10

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`);

Methods

# abstract protected prepare(rawStatement) → {RawRamQuery.<M>}

Modifies the raw query statement to include pagination parameters. This protected method sets the limit parameter on the query to match the page size.

Prepares a statement for pagination

Parameters:
Name Type Description
rawStatement RawRamQuery.<M>

The original query statement

View Source query/Paginator.ts, line 243

The modified query with pagination parameters

RawRamQuery.<M>