UNPKG

nestjs-paginate

Version:

Pagination and filtering helper method for TypeORM repositories or query builders using Nest.js framework.

65 lines (64 loc) 2.33 kB
import { FindOptionsWhere, ObjectLiteral, Repository, SelectQueryBuilder } from 'typeorm'; import { PaginateQuery } from './decorator'; import { FilterOperator, FilterSuffix } from './filter'; import { Column, JoinMethod, MappedColumns, RelationSchema, RelationSchemaInput, SortBy } from './helper'; export { FilterOperator, FilterSuffix }; export declare class Paginated<T> { data: T[]; meta: { itemsPerPage: number; totalItems?: number; currentPage?: number; totalPages?: number; sortBy: SortBy<T>; searchBy: Column<T>[]; search: string; select: string[]; filter?: { [column: string]: string | string[]; }; cursor?: string; }; links: { first?: string; previous?: string; current: string; next?: string; last?: string; }; } export declare enum PaginationType { LIMIT_AND_OFFSET = "limit", TAKE_AND_SKIP = "take", CURSOR = "cursor" } export interface PaginateConfig<T> { relations?: RelationSchemaInput<T>; sortableColumns: Column<T>[]; nullSort?: 'first' | 'last'; searchableColumns?: Column<T>[]; select?: (Column<T> | (string & {}))[]; maxLimit?: number; defaultSortBy?: SortBy<T>; defaultLimit?: number; where?: FindOptionsWhere<T> | FindOptionsWhere<T>[]; filterableColumns?: Partial<MappedColumns<T, (FilterOperator | FilterSuffix)[] | true>>; loadEagerRelations?: boolean; withDeleted?: boolean; paginationType?: PaginationType; relativePath?: boolean; origin?: string; ignoreSearchByInQueryParam?: boolean; ignoreSelectInQueryParam?: boolean; multiWordSearch?: boolean; defaultJoinMethod?: JoinMethod; joinMethods?: Partial<MappedColumns<T, JoinMethod>>; } export declare enum PaginationLimit { NO_PAGINATION = -1, COUNTER_ONLY = 0, DEFAULT_LIMIT = 20, DEFAULT_MAX_LIMIT = 100 } export declare function paginate<T extends ObjectLiteral>(query: PaginateQuery, repo: Repository<T> | SelectQueryBuilder<T>, config: PaginateConfig<T>): Promise<Paginated<T>>; export declare function addRelationsFromSchema<T>(queryBuilder: SelectQueryBuilder<T>, schema: RelationSchema<T>, config: PaginateConfig<T>, joinMethods: Partial<MappedColumns<T, JoinMethod>>): void;