UNPKG

nestjs-paginate

Version:

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

60 lines (59 loc) 2.29 kB
import { FindOperator, SelectQueryBuilder } from 'typeorm'; import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause'; import { PaginateQuery } from './decorator'; import { JoinMethod } from './helper'; export declare enum FilterOperator { EQ = "$eq", GT = "$gt", GTE = "$gte", IN = "$in", NULL = "$null", LT = "$lt", LTE = "$lte", BTW = "$btw", ILIKE = "$ilike", SW = "$sw", CONTAINS = "$contains" } export declare function isOperator(value: unknown): value is FilterOperator; export declare enum FilterSuffix { NOT = "$not" } export declare function isSuffix(value: unknown): value is FilterSuffix; export declare enum FilterComparator { AND = "$and", OR = "$or" } export declare function isComparator(value: unknown): value is FilterComparator; export declare const OperatorSymbolToFunction: Map<FilterOperator | FilterSuffix, (...args: any[]) => FindOperator<string>>; type Filter = { comparator: FilterComparator; findOperator: FindOperator<string>; }; type ColumnFilters = { [columnName: string]: Filter[]; }; type ColumnJoinMethods = { [columnName: string]: JoinMethod; }; export interface FilterToken { comparator: FilterComparator; suffix?: FilterSuffix; operator: FilterOperator; value: string; } export declare function fixQueryParam(alias: string, column: string, filter: Filter, condition: WherePredicateOperator, parameters: { [key: string]: string; }): { [key: string]: string; }; export declare function generatePredicateCondition(qb: SelectQueryBuilder<unknown>, column: string, filter: Filter, alias: string, isVirtualProperty?: boolean): WherePredicateOperator; export declare function addWhereCondition<T>(qb: SelectQueryBuilder<T>, column: string, filter: ColumnFilters): void; export declare function parseFilterToken(raw?: string): FilterToken | null; export declare function parseFilter<T>(query: PaginateQuery, filterableColumns?: { [column: string]: (FilterOperator | FilterSuffix)[] | true; }, qb?: SelectQueryBuilder<T>): ColumnFilters; export declare function addFilter<T>(qb: SelectQueryBuilder<T>, query: PaginateQuery, filterableColumns?: { [column: string]: (FilterOperator | FilterSuffix)[] | true; }): ColumnJoinMethods; export {};