@ahoo-wang/fetcher-wow
Version:
Support for Wow(https://github.com/Ahoo-Wang/Wow) in Fetcher
53 lines • 2.91 kB
TypeScript
import { FieldSort, SortDirection } from './sort';
import { ListQuery } from './queryable';
import { Condition } from './condition';
/**
* Represents a cursor-based pagination query configuration.
* This interface defines the structure for implementing cursor-based pagination,
* which is an efficient way to paginate through large datasets.
*/
export interface CursorQuery<FIELDS extends string = string> {
/** Field name used for cursor-based sorting and filtering */
field: FIELDS;
/**
* Cursor ID marking the starting point (exclusive)
* Uses CURSOR_ID_START constant for initial query
*/
cursorId?: string;
/** Sort direction for pagination traversal (ascending or descending) */
direction?: SortDirection;
/** Base query object to be enhanced with cursor-based parameters */
query: ListQuery;
}
/** Special cursor ID value representing the starting point of a dataset */
export declare const CURSOR_ID_START = "~";
/**
* Generates a cursor condition for filtering records relative to the cursor position
* @param params - Cursor parameters excluding the base query
* @param params.field - The field to apply the cursor condition on
* @param params.cursorId - The cursor ID to compare against (defaults to CURSOR_ID_START)
* @param params.direction - Sort direction which determines the comparison operator (defaults to SortDirection.DESC)
* @returns Condition object for filtering records based on cursor position
*/
export declare function cursorCondition<FIELDS extends string = string>({ field, cursorId, direction, }: Omit<CursorQuery<FIELDS>, 'query'>): Condition<FIELDS>;
/**
* Creates a sort configuration based on cursor parameters
* @param params - Cursor parameters excluding the base query
* @param params.field - The field to sort by
* @param params.direction - Sort direction (defaults to SortDirection.DESC)
* @returns FieldSort configuration for cursor-based pagination
*/
export declare function cursorSort<FIELDS extends string = string>({ field, direction, }: Omit<CursorQuery<FIELDS>, 'query'>): FieldSort<FIELDS>;
/**
* Enhances a base query with cursor-based pagination parameters
* This function combines the cursor condition with the existing query condition
* and sets the sorting according to the cursor parameters.
* @param options - Complete cursor query configuration
* @param options.field - The field used for cursor-based sorting and filtering
* @param options.cursorId - The cursor ID marking the starting point (exclusive)
* @param options.direction - Sort direction for pagination traversal
* @param options.query - Base query object to be enhanced with cursor-based parameters
* @returns Enhanced query with cursor-based filtering and sorting
*/
export declare function cursorQuery<FIELDS extends string = string>(options: CursorQuery<FIELDS>): ListQuery;
//# sourceMappingURL=cursorQuery.d.ts.map