UNPKG

prisma-extension-pagination

Version:
52 lines (51 loc) 2.69 kB
import type { CursorPaginationMeta, CursorPaginationOptions, GetCursorFunction, PageNumberPaginationMeta, PageNumberPaginationOptions, ParseCursorFunction } from './types'; import { Prisma } from '@prisma/client/extension'; type Paginator<O extends PaginatorOptions> = <T, A>(this: T, args?: Prisma.Exact<A, Omit<Prisma.Args<T, 'findMany'>, 'cursor' | 'take' | 'skip'>>) => { withPages: O['pages'] extends { limit: number; } ? <TOptions extends Omit<P, 'limit'>, P extends PageNumberPaginationOptions>(options?: TOptions & { limit?: P['limit']; }) => Promise<[ Prisma.Result<T, A, 'findMany'>, PageNumberPaginationMeta<TOptions extends { includePageCount: boolean; } ? TOptions['includePageCount'] : O['pages'] extends { includePageCount: boolean; } ? O['pages']['includePageCount'] : false> ]> : <TOptions extends PageNumberPaginationOptions, P extends PageNumberPaginationOptions>(options: TOptions & { limit: P['limit']; }) => Promise<[ Prisma.Result<T, A, 'findMany'>, PageNumberPaginationMeta<TOptions extends { includePageCount: boolean; } ? TOptions['includePageCount'] : O['pages'] extends { includePageCount: boolean; } ? O['pages']['includePageCount'] : false> ]>; withCursor: O['cursor'] extends { limit: number; } ? <TOptions extends Omit<P, 'limit'>, P extends CursorPaginationOptions<Prisma.Result<T, A, 'findMany'>[number], NonNullable<Prisma.Args<T, 'findMany'>['cursor']>>>(options?: TOptions & { limit?: P['limit']; }) => Promise<[Prisma.Result<T, A, 'findMany'>, CursorPaginationMeta]> : <TOptions extends Omit<P, 'limit'>, P extends CursorPaginationOptions<Prisma.Result<T, A, 'findMany'>[number], NonNullable<Prisma.Args<T, 'findMany'>['cursor']>>>(options: TOptions & { limit: P['limit']; }) => Promise<[Prisma.Result<T, A, 'findMany'>, CursorPaginationMeta]>; }; interface PaginatorOptions { pages?: { limit?: number; includePageCount?: boolean; }; cursor?: { limit?: number; getCursor?: GetCursorFunction<any>; parseCursor?: ParseCursorFunction<any>; }; } export declare function createPaginator<O extends PaginatorOptions>(globalOptions?: O): Paginator<O>; export declare const paginate: Paginator<PaginatorOptions>; export declare function extension<O extends PaginatorOptions>(options?: O): (client: any) => import("@prisma/client/extension").PrismaClientExtends<import("@prisma/client/runtime/client").InternalArgs<{}, { $allModels: { paginate: Paginator<O>; }; }, {}, {}>>; export {};