import { RawRamQuery } from "./types"; import { Paginator } from "../query"; import { Model } from "@decaf-ts/decorator-validation"; import { Adapter } from "../persistence"; import type { Constructor } from "@decaf-ts/decoration"; import { MaybeContextualArg } from "../utils/ContextualLoggedClass"; /** * @description RAM-specific paginator implementation * @summary Extends the base Paginator class to provide pagination functionality for RAM adapter queries. * This class handles the pagination of query results from the in-memory storage, allowing * for efficient retrieval of large result sets in smaller chunks. * @template M - The model type being paginated * @template R - The result type returned by the paginator * @class RamPaginator * @category Ram * @example * ```typescript * // Create a query for User model * const query: RawRamQuery = { * select: undefined, // Select all fields * from: User, * where: (user) => user.active === true * }; * * // Create a paginator with page size of 10 * const paginator = new RamPaginator(adapter, query, 10, User); * * // Get the first page of results * const firstPage = await paginator.page(1); * * // Get the next page * const secondPage = await paginator.page(2); * ``` */ export declare class RamPaginator extends Paginator> { constructor(adapter: Adapter, any>, query: RawRamQuery, size: number, clazz: Constructor); /** * @description Prepares a RAM query for pagination * @summary Modifies the raw query statement to include pagination parameters. * This protected method sets the limit parameter on the query to match the page size. * @param {RawRamQuery} rawStatement - The original query statement * @return {RawRamQuery} The modified query with pagination parameters */ protected prepare(rawStatement: RawRamQuery): RawRamQuery; /** * @description Retrieves a specific page of results * @summary Executes the query with pagination parameters to retrieve a specific page of results. * This method calculates the appropriate skip value based on the page number and page size, * executes the query, and updates the current page tracking. * @param {number} [page=1] - The page number to retrieve (1-based) * @return {Promise} A promise that resolves to an array of results for the requested page */ page(page?: number, ...args: MaybeContextualArg): Promise; }