nestjs-paginate 4.7.0 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,8 +13,9 @@ Pagination and filtering helper method for TypeORM repositories or query builder
13
13
  - Pagination conforms to [JSON:API](https://jsonapi.org/)
14
14
  - Sort by multiple columns
15
15
  - Search across columns
16
- - Filter using operators (`$eq`, `$not`, `$null`, `$in`, `$gt`, `$gte`, `$lt`, `$lte`, `$btw`, `$ilike`)
16
+ - Filter using operators (`$eq`, `$not`, `$null`, `$in`, `$gt`, `$gte`, `$lt`, `$lte`, `$btw`, `$ilike`, `$sw`)
17
17
  - Include relations
18
+ - Virtual column support
18
19
 
19
20
  ## Installation
20
21
 
@@ -300,7 +301,7 @@ const config: PaginateConfig<CatEntity> = {
300
301
  const result = await paginate<CatEntity>(query, catRepo, config)
301
302
  ```
302
303
 
303
- ## Filters
304
+ ## Single Filters
304
305
 
305
306
  Filter operators must be whitelisted per column in `PaginateConfig`.
306
307
 
@@ -314,12 +315,38 @@ Filter operators must be whitelisted per column in `PaginateConfig`.
314
315
 
315
316
  `?filter.summary=$not:$ilike:term` where column `summary` does **not** contain `term`
316
317
 
318
+ `?filter.summary=$sw:term` where column `summary` starts with `term`
319
+
317
320
  `?filter.seenAt=$null` where column `seenAt` is `NULL`
318
321
 
319
322
  `?filter.seenAt=$not:$null` where column `seenAt` is **not** `NULL`
320
323
 
321
324
  `?filter.createdAt=$btw:2022-02-02,2022-02-10` where column `createdAt` is between the dates `2022-02-02` and `2022-02-10`
322
325
 
326
+ ## Multi Filters
327
+
328
+ Multi filters are filters that can be applied to a single column with a comparator. As for single filters, multi filters must be whitelisted per column in `PaginateConfig`.
329
+
330
+ ### Examples
331
+
332
+ `?filter.id=$gt:3&filter.id=$lt:5` where column `id` is greater than `3` **and** less than `5`
333
+
334
+ `?filter.id=$gt:3&filter.id=$or$lt:5` where column `id` is greater than `3` **or** less than `5`
335
+
336
+ `?filter.id=$gt:3&filter.id=$and$lt:5&filter.id=$or$eq:7` where column `id` is greater than `3` **and** less than `5` **or** equal to `7`
337
+
338
+ **Note:** the `and` operators are not required. The above example is equivalent to:
339
+
340
+ `?filter.id=$gt:3&filter.id=$lt:5&filter.id=$or$eq:7`
341
+
342
+ **Note:** the first comparator on the the first filter is ingnored becouse the filters are grouped by the column name and chained with an `and` to other filters.
343
+
344
+ `...&filter.id=5&filter.id=$or:7&filter.name=Milo&...`
345
+
346
+ is resolved to:
347
+
348
+ `WHERE ... AND (id = 5 OR id = 7) AND name = 'Milo' AND ...`
349
+
323
350
  ## Troubleshooting
324
351
 
325
352
  The package does not report error reasons in the response bodies. They are instead
package/lib/filter.d.ts CHANGED
@@ -1,7 +1,29 @@
1
1
  import { FindOperator, SelectQueryBuilder } from 'typeorm';
2
2
  import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause';
3
- export type Filter = {
4
- [columnName: string]: FindOperator<string>;
3
+ import { PaginateQuery } from './decorator';
4
+ import { FilterComparator, FilterOperator, FilterSuffix } from './operator';
5
+ import { PaginateConfig } from './paginate';
6
+ type Filter = {
7
+ comparator: FilterComparator;
8
+ findOperator: FindOperator<string>;
9
+ };
10
+ type ColumnsFilters = {
11
+ [columnName: string]: Filter[];
12
+ };
13
+ export interface FilterToken {
14
+ comparator: FilterComparator;
15
+ suffix?: FilterSuffix;
16
+ operator: FilterOperator;
17
+ value: string;
18
+ }
19
+ export declare function fixQueryParam(alias: string, column: string, filter: Filter, condition: WherePredicateOperator, parameters: {
20
+ [key: string]: string;
21
+ }): {
22
+ [key: string]: string;
5
23
  };
6
24
  export declare function generatePredicateCondition(qb: SelectQueryBuilder<unknown>, column: string, filter: Filter, alias: string, isVirtualProperty?: boolean): WherePredicateOperator;
7
- export declare function addWhereCondition(qb: SelectQueryBuilder<unknown>, column: string, filter: Filter): void;
25
+ export declare function addWhereCondition<T>(qb: SelectQueryBuilder<T>, column: string, filter: ColumnsFilters): void;
26
+ export declare function getFilterTokens(raw?: string): FilterToken | null;
27
+ export declare function parseFilter<T>(query: PaginateQuery, filterableColumns?: PaginateConfig<T>['filterableColumns']): ColumnsFilters;
28
+ export declare function addFilter<T>(qb: SelectQueryBuilder<T>, query: PaginateQuery, filterableColumns?: PaginateConfig<T>['filterableColumns']): SelectQueryBuilder<T>;
29
+ export {};
package/lib/filter.js CHANGED
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addWhereCondition = exports.generatePredicateCondition = void 0;
3
+ exports.addFilter = exports.parseFilter = exports.getFilterTokens = exports.addWhereCondition = exports.generatePredicateCondition = exports.fixQueryParam = void 0;
4
+ const typeorm_1 = require("typeorm");
4
5
  const helper_1 = require("./helper");
5
- function generatePredicateCondition(qb, column, filter, alias, isVirtualProperty = false) {
6
- return qb['getWherePredicateCondition'](isVirtualProperty ? column : alias, filter[column]);
7
- }
8
- exports.generatePredicateCondition = generatePredicateCondition;
6
+ const operator_1 = require("./operator");
9
7
  // This function is used to fix the query parameters when using relation, embeded or virtual properties
10
8
  // It will replace the column name with the alias name and return the new parameters
11
9
  function fixQueryParam(alias, column, filter, condition, parameters) {
@@ -17,8 +15,8 @@ function fixQueryParam(alias, column, filter, condition, parameters) {
17
15
  case 'between':
18
16
  condition_params = [alias, `:${column}_from`, `:${column}_to`];
19
17
  params = {
20
- [column + '_from']: filter[column].value[0],
21
- [column + '_to']: filter[column].value[1],
18
+ [column + '_from']: filter.findOperator.value[0],
19
+ [column + '_to']: filter.findOperator.value[1],
22
20
  };
23
21
  break;
24
22
  case 'in':
@@ -39,16 +37,132 @@ function fixQueryParam(alias, column, filter, condition, parameters) {
39
37
  }
40
38
  return params;
41
39
  }
40
+ exports.fixQueryParam = fixQueryParam;
41
+ function generatePredicateCondition(qb, column, filter, alias, isVirtualProperty = false) {
42
+ return qb['getWherePredicateCondition'](isVirtualProperty ? column : alias, filter.findOperator);
43
+ }
44
+ exports.generatePredicateCondition = generatePredicateCondition;
42
45
  function addWhereCondition(qb, column, filter) {
43
46
  const columnProperties = (0, helper_1.getPropertiesByColumnName)(column);
44
47
  const { isVirtualProperty, query: virtualQuery } = (0, helper_1.extractVirtualProperty)(qb, columnProperties);
45
48
  const isRelation = (0, helper_1.checkIsRelation)(qb, columnProperties.propertyPath);
46
- const alias = (0, helper_1.fixColumnAlias)(columnProperties, qb.alias, isRelation, isVirtualProperty, virtualQuery);
47
- const condition = generatePredicateCondition(qb, column, filter, alias, isVirtualProperty);
48
- const parameters = fixQueryParam(alias, column, filter, condition, {
49
- [column]: filter[column].value,
49
+ filter[column].forEach((columnFilter, index) => {
50
+ const columnNamePerIteration = `${column}${index}`;
51
+ const alias = (0, helper_1.fixColumnAlias)(columnProperties, qb.alias, isRelation, isVirtualProperty, virtualQuery);
52
+ const condition = generatePredicateCondition(qb, column, columnFilter, alias, isVirtualProperty);
53
+ const parameters = fixQueryParam(alias, columnNamePerIteration, columnFilter, condition, {
54
+ [columnNamePerIteration]: columnFilter.findOperator.value,
55
+ });
56
+ if (columnFilter.comparator === operator_1.FilterComparator.OR) {
57
+ qb.orWhere(qb['createWhereConditionExpression'](condition), parameters);
58
+ }
59
+ else {
60
+ qb.andWhere(qb['createWhereConditionExpression'](condition), parameters);
61
+ }
50
62
  });
51
- qb.andWhere(qb['createWhereConditionExpression'](condition), parameters);
52
63
  }
53
64
  exports.addWhereCondition = addWhereCondition;
65
+ function getFilterTokens(raw) {
66
+ if (raw === undefined || raw === null) {
67
+ return null;
68
+ }
69
+ const token = {
70
+ comparator: operator_1.FilterComparator.AND,
71
+ suffix: undefined,
72
+ operator: operator_1.FilterOperator.EQ,
73
+ value: raw,
74
+ };
75
+ const MAX_OPERTATOR = 4; // max 4 operator es: $and:$not:$eq:$null
76
+ const OPERAND_SEPARATOR = ':';
77
+ const matches = raw.split(OPERAND_SEPARATOR);
78
+ const maxOperandCount = matches.length > MAX_OPERTATOR ? MAX_OPERTATOR : matches.length;
79
+ const notValue = [];
80
+ for (let i = 0; i < maxOperandCount; i++) {
81
+ const match = matches[i];
82
+ if ((0, operator_1.isComparator)(match)) {
83
+ token.comparator = match;
84
+ }
85
+ else if ((0, operator_1.isSuffix)(match)) {
86
+ token.suffix = match;
87
+ }
88
+ else if ((0, operator_1.isOperator)(match)) {
89
+ token.operator = match;
90
+ }
91
+ else {
92
+ break;
93
+ }
94
+ notValue.push(match);
95
+ }
96
+ if (notValue.length) {
97
+ token.value =
98
+ token.operator === operator_1.FilterOperator.NULL
99
+ ? undefined
100
+ : raw.replace(`${notValue.join(OPERAND_SEPARATOR)}${OPERAND_SEPARATOR}`, '');
101
+ }
102
+ return token;
103
+ }
104
+ exports.getFilterTokens = getFilterTokens;
105
+ function parseFilter(query, filterableColumns) {
106
+ const filter = {};
107
+ if (!filterableColumns || !query.filter) {
108
+ return {};
109
+ }
110
+ for (const column of Object.keys(query.filter)) {
111
+ if (!(column in filterableColumns)) {
112
+ continue;
113
+ }
114
+ const allowedOperators = filterableColumns[column];
115
+ const input = query.filter[column];
116
+ const statements = !Array.isArray(input) ? [input] : input;
117
+ for (const raw of statements) {
118
+ const token = getFilterTokens(raw);
119
+ if (!token ||
120
+ !(allowedOperators.includes(token.operator) ||
121
+ (token.suffix === operator_1.FilterSuffix.NOT &&
122
+ allowedOperators.includes(token.suffix) &&
123
+ token.operator === operator_1.FilterOperator.EQ) ||
124
+ (token.suffix &&
125
+ allowedOperators.includes(token.suffix) &&
126
+ allowedOperators.includes(token.operator)))) {
127
+ continue;
128
+ }
129
+ const params = {
130
+ comparator: token.comparator,
131
+ findOperator: undefined,
132
+ };
133
+ switch (token.operator) {
134
+ case operator_1.FilterOperator.BTW:
135
+ params.findOperator = operator_1.OperatorSymbolToFunction.get(token.operator)(...token.value.split(','));
136
+ break;
137
+ case operator_1.FilterOperator.IN:
138
+ params.findOperator = operator_1.OperatorSymbolToFunction.get(token.operator)(token.value.split(','));
139
+ break;
140
+ case operator_1.FilterOperator.ILIKE:
141
+ params.findOperator = operator_1.OperatorSymbolToFunction.get(token.operator)(`%${token.value}%`);
142
+ break;
143
+ case operator_1.FilterOperator.SW:
144
+ params.findOperator = operator_1.OperatorSymbolToFunction.get(token.operator)(`${token.value}%`);
145
+ break;
146
+ default:
147
+ params.findOperator = operator_1.OperatorSymbolToFunction.get(token.operator)(token.value);
148
+ }
149
+ filter[column] = [...(filter[column] || []), params];
150
+ if (token.suffix) {
151
+ const lastFilterElement = filter[column].length - 1;
152
+ filter[column][lastFilterElement].findOperator = operator_1.OperatorSymbolToFunction.get(token.suffix)(filter[column][lastFilterElement].findOperator);
153
+ }
154
+ }
155
+ }
156
+ return filter;
157
+ }
158
+ exports.parseFilter = parseFilter;
159
+ function addFilter(qb, query, filterableColumns) {
160
+ const filter = parseFilter(query, filterableColumns);
161
+ return qb.andWhere(new typeorm_1.Brackets((qb) => {
162
+ for (const column in filter) {
163
+ addWhereCondition(qb, column, filter);
164
+ }
165
+ }));
166
+ }
167
+ exports.addFilter = addFilter;
54
168
  //# sourceMappingURL=filter.js.map
package/lib/filter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
package/lib/helper.d.ts CHANGED
@@ -11,7 +11,7 @@ export type RelationColumn<T> = Extract<Column<T>, {
11
11
  export type Order<T> = [Column<T>, 'ASC' | 'DESC'];
12
12
  export type SortBy<T> = Order<T>[];
13
13
  export declare const positiveNumberOrDefault: (value: number | undefined, defaultValue: number, minValue?: 0 | 1) => number;
14
- type ColumnProperties = {
14
+ export type ColumnProperties = {
15
15
  propertyPath?: string;
16
16
  propertyName: string;
17
17
  };
@@ -0,0 +1,24 @@
1
+ import { FindOperator } from 'typeorm';
2
+ export declare enum FilterOperator {
3
+ EQ = "$eq",
4
+ GT = "$gt",
5
+ GTE = "$gte",
6
+ IN = "$in",
7
+ NULL = "$null",
8
+ LT = "$lt",
9
+ LTE = "$lte",
10
+ BTW = "$btw",
11
+ ILIKE = "$ilike",
12
+ SW = "$sw"
13
+ }
14
+ export declare function isOperator(value: unknown): value is FilterOperator;
15
+ export declare enum FilterSuffix {
16
+ NOT = "$not"
17
+ }
18
+ export declare function isSuffix(value: unknown): value is FilterSuffix;
19
+ export declare enum FilterComparator {
20
+ AND = "$and",
21
+ OR = "$or"
22
+ }
23
+ export declare function isComparator(value: unknown): value is FilterComparator;
24
+ export declare const OperatorSymbolToFunction: Map<FilterOperator | FilterSuffix, (...args: any[]) => FindOperator<string>>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperatorSymbolToFunction = exports.isComparator = exports.FilterComparator = exports.isSuffix = exports.FilterSuffix = exports.isOperator = exports.FilterOperator = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const typeorm_1 = require("typeorm");
6
+ var FilterOperator;
7
+ (function (FilterOperator) {
8
+ FilterOperator["EQ"] = "$eq";
9
+ FilterOperator["GT"] = "$gt";
10
+ FilterOperator["GTE"] = "$gte";
11
+ FilterOperator["IN"] = "$in";
12
+ FilterOperator["NULL"] = "$null";
13
+ FilterOperator["LT"] = "$lt";
14
+ FilterOperator["LTE"] = "$lte";
15
+ FilterOperator["BTW"] = "$btw";
16
+ FilterOperator["ILIKE"] = "$ilike";
17
+ FilterOperator["SW"] = "$sw";
18
+ })(FilterOperator = exports.FilterOperator || (exports.FilterOperator = {}));
19
+ function isOperator(value) {
20
+ return (0, lodash_1.values)(FilterOperator).includes(value);
21
+ }
22
+ exports.isOperator = isOperator;
23
+ var FilterSuffix;
24
+ (function (FilterSuffix) {
25
+ FilterSuffix["NOT"] = "$not";
26
+ })(FilterSuffix = exports.FilterSuffix || (exports.FilterSuffix = {}));
27
+ function isSuffix(value) {
28
+ return (0, lodash_1.values)(FilterSuffix).includes(value);
29
+ }
30
+ exports.isSuffix = isSuffix;
31
+ var FilterComparator;
32
+ (function (FilterComparator) {
33
+ FilterComparator["AND"] = "$and";
34
+ FilterComparator["OR"] = "$or";
35
+ })(FilterComparator = exports.FilterComparator || (exports.FilterComparator = {}));
36
+ function isComparator(value) {
37
+ return (0, lodash_1.values)(FilterComparator).includes(value);
38
+ }
39
+ exports.isComparator = isComparator;
40
+ exports.OperatorSymbolToFunction = new Map([
41
+ [FilterOperator.EQ, typeorm_1.Equal],
42
+ [FilterOperator.GT, typeorm_1.MoreThan],
43
+ [FilterOperator.GTE, typeorm_1.MoreThanOrEqual],
44
+ [FilterOperator.IN, typeorm_1.In],
45
+ [FilterOperator.NULL, typeorm_1.IsNull],
46
+ [FilterOperator.LT, typeorm_1.LessThan],
47
+ [FilterOperator.LTE, typeorm_1.LessThanOrEqual],
48
+ [FilterOperator.BTW, typeorm_1.Between],
49
+ [FilterOperator.ILIKE, typeorm_1.ILike],
50
+ [FilterSuffix.NOT, typeorm_1.Not],
51
+ [FilterOperator.SW, typeorm_1.ILike],
52
+ ]);
53
+ //# sourceMappingURL=operator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator.js","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,qCAYgB;AAEhB,IAAY,cAWX;AAXD,WAAY,cAAc;IACtB,4BAAU,CAAA;IACV,4BAAU,CAAA;IACV,8BAAY,CAAA;IACZ,4BAAU,CAAA;IACV,gCAAc,CAAA;IACd,4BAAU,CAAA;IACV,8BAAY,CAAA;IACZ,8BAAY,CAAA;IACZ,kCAAgB,CAAA;IAChB,4BAAU,CAAA;AACd,CAAC,EAXW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAWzB;AAED,SAAgB,UAAU,CAAC,KAAc;IACrC,OAAO,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AACxD,CAAC;AAFD,gCAEC;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACpB,4BAAY,CAAA;AAChB,CAAC,EAFW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAEvB;AAED,SAAgB,QAAQ,CAAC,KAAc;IACnC,OAAO,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AACtD,CAAC;AAFD,4BAEC;AAED,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,gCAAY,CAAA;IACZ,8BAAU,CAAA;AACd,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;AAED,SAAgB,YAAY,CAAC,KAAc;IACvC,OAAO,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;AAC1D,CAAC;AAFD,oCAEC;AAEY,QAAA,wBAAwB,GAAG,IAAI,GAAG,CAG7C;IACE,CAAC,cAAc,CAAC,EAAE,EAAE,eAAK,CAAC;IAC1B,CAAC,cAAc,CAAC,EAAE,EAAE,kBAAQ,CAAC;IAC7B,CAAC,cAAc,CAAC,GAAG,EAAE,yBAAe,CAAC;IACrC,CAAC,cAAc,CAAC,EAAE,EAAE,YAAE,CAAC;IACvB,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAM,CAAC;IAC7B,CAAC,cAAc,CAAC,EAAE,EAAE,kBAAQ,CAAC;IAC7B,CAAC,cAAc,CAAC,GAAG,EAAE,yBAAe,CAAC;IACrC,CAAC,cAAc,CAAC,GAAG,EAAE,iBAAO,CAAC;IAC7B,CAAC,cAAc,CAAC,KAAK,EAAE,eAAK,CAAC;IAC7B,CAAC,YAAY,CAAC,GAAG,EAAE,aAAG,CAAC;IACvB,CAAC,cAAc,CAAC,EAAE,EAAE,eAAK,CAAC;CAC7B,CAAC,CAAA"}
package/lib/paginate.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { Repository, SelectQueryBuilder, FindOperator, FindOptionsWhere, ObjectLiteral } from 'typeorm';
1
+ import { Repository, SelectQueryBuilder, FindOptionsWhere, ObjectLiteral } from 'typeorm';
2
2
  import { PaginateQuery } from './decorator';
3
3
  import { Column, RelationColumn, SortBy } from './helper';
4
+ import { FilterOperator, FilterSuffix } from './operator';
4
5
  export declare class Paginated<T> {
5
6
  data: T[];
6
7
  meta: {
@@ -34,27 +35,12 @@ export interface PaginateConfig<T> {
34
35
  defaultLimit?: number;
35
36
  where?: FindOptionsWhere<T> | FindOptionsWhere<T>[];
36
37
  filterableColumns?: {
37
- [key in Column<T>]?: FilterOperator[];
38
+ [key in Column<T>]?: (FilterOperator | FilterSuffix)[];
38
39
  };
39
40
  withDeleted?: boolean;
40
41
  relativePath?: boolean;
41
42
  origin?: string;
42
43
  }
43
- export declare enum FilterOperator {
44
- EQ = "$eq",
45
- GT = "$gt",
46
- GTE = "$gte",
47
- IN = "$in",
48
- NULL = "$null",
49
- LT = "$lt",
50
- LTE = "$lte",
51
- BTW = "$btw",
52
- NOT = "$not",
53
- ILIKE = "$ilike"
54
- }
55
- export declare function isOperator(value: unknown): value is FilterOperator;
56
- export declare const OperatorSymbolToFunction: Map<FilterOperator, (...args: any[]) => FindOperator<string>>;
57
- export declare function getFilterTokens(raw: string): string[];
58
44
  export declare const DEFAULT_MAX_LIMIT = 100;
59
45
  export declare const DEFAULT_LIMIT = 20;
60
46
  export declare const NO_PAGINATION = 0;
package/lib/paginate.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paginate = exports.NO_PAGINATION = exports.DEFAULT_LIMIT = exports.DEFAULT_MAX_LIMIT = exports.getFilterTokens = exports.OperatorSymbolToFunction = exports.isOperator = exports.FilterOperator = exports.Paginated = void 0;
3
+ exports.paginate = exports.NO_PAGINATION = exports.DEFAULT_LIMIT = exports.DEFAULT_MAX_LIMIT = exports.Paginated = void 0;
4
4
  const typeorm_1 = require("typeorm");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const lodash_1 = require("lodash");
@@ -11,113 +11,6 @@ const logger = new common_1.Logger('nestjs-paginate');
11
11
  class Paginated {
12
12
  }
13
13
  exports.Paginated = Paginated;
14
- var FilterOperator;
15
- (function (FilterOperator) {
16
- FilterOperator["EQ"] = "$eq";
17
- FilterOperator["GT"] = "$gt";
18
- FilterOperator["GTE"] = "$gte";
19
- FilterOperator["IN"] = "$in";
20
- FilterOperator["NULL"] = "$null";
21
- FilterOperator["LT"] = "$lt";
22
- FilterOperator["LTE"] = "$lte";
23
- FilterOperator["BTW"] = "$btw";
24
- FilterOperator["NOT"] = "$not";
25
- FilterOperator["ILIKE"] = "$ilike";
26
- })(FilterOperator = exports.FilterOperator || (exports.FilterOperator = {}));
27
- function isOperator(value) {
28
- return (0, lodash_1.values)(FilterOperator).includes(value);
29
- }
30
- exports.isOperator = isOperator;
31
- exports.OperatorSymbolToFunction = new Map([
32
- [FilterOperator.EQ, typeorm_1.Equal],
33
- [FilterOperator.GT, typeorm_1.MoreThan],
34
- [FilterOperator.GTE, typeorm_1.MoreThanOrEqual],
35
- [FilterOperator.IN, typeorm_1.In],
36
- [FilterOperator.NULL, typeorm_1.IsNull],
37
- [FilterOperator.LT, typeorm_1.LessThan],
38
- [FilterOperator.LTE, typeorm_1.LessThanOrEqual],
39
- [FilterOperator.BTW, typeorm_1.Between],
40
- [FilterOperator.NOT, typeorm_1.Not],
41
- [FilterOperator.ILIKE, typeorm_1.ILike],
42
- ]);
43
- function getFilterTokens(raw) {
44
- const tokens = [];
45
- const matches = raw.match(/(\$\w+):/g);
46
- if (matches) {
47
- const value = raw.replace(matches.join(''), '');
48
- tokens.push(...matches.map((token) => token.substring(0, token.length - 1)), value);
49
- }
50
- else {
51
- tokens.push(raw);
52
- }
53
- if (tokens.length === 0 || tokens.length > 3) {
54
- return [];
55
- }
56
- else if (tokens.length === 2) {
57
- if (tokens[1] !== FilterOperator.NULL) {
58
- tokens.unshift(null);
59
- }
60
- }
61
- else if (tokens.length === 1) {
62
- if (tokens[0] === FilterOperator.NULL) {
63
- tokens.unshift(null);
64
- }
65
- else {
66
- tokens.unshift(null, FilterOperator.EQ);
67
- }
68
- }
69
- return tokens;
70
- }
71
- exports.getFilterTokens = getFilterTokens;
72
- function parseFilter(query, config) {
73
- const filter = {};
74
- let filterableColumns = config.filterableColumns;
75
- if (filterableColumns === undefined) {
76
- logger.debug("No 'filterableColumns' given, ignoring filters.");
77
- filterableColumns = {};
78
- }
79
- for (const column of Object.keys(query.filter)) {
80
- if (!(column in filterableColumns)) {
81
- continue;
82
- }
83
- const allowedOperators = filterableColumns[column];
84
- const input = query.filter[column];
85
- const statements = !Array.isArray(input) ? [input] : input;
86
- for (const raw of statements) {
87
- const tokens = getFilterTokens(raw);
88
- if (tokens.length === 0) {
89
- continue;
90
- }
91
- const [op2, op1, value] = tokens;
92
- if (!isOperator(op1) || !allowedOperators.includes(op1)) {
93
- continue;
94
- }
95
- if (isOperator(op2) && !allowedOperators.includes(op2)) {
96
- continue;
97
- }
98
- if (isOperator(op1)) {
99
- switch (op1) {
100
- case FilterOperator.BTW:
101
- filter[column] = exports.OperatorSymbolToFunction.get(op1)(...value.split(','));
102
- break;
103
- case FilterOperator.IN:
104
- filter[column] = exports.OperatorSymbolToFunction.get(op1)(value.split(','));
105
- break;
106
- case FilterOperator.ILIKE:
107
- filter[column] = exports.OperatorSymbolToFunction.get(op1)(`%${value}%`);
108
- break;
109
- default:
110
- filter[column] = exports.OperatorSymbolToFunction.get(op1)(value);
111
- break;
112
- }
113
- }
114
- if (isOperator(op2)) {
115
- filter[column] = exports.OperatorSymbolToFunction.get(op2)(filter[column]);
116
- }
117
- }
118
- }
119
- return filter;
120
- }
121
14
  exports.DEFAULT_MAX_LIMIT = 100;
122
15
  exports.DEFAULT_LIMIT = 20;
123
16
  exports.NO_PAGINATION = 0;
@@ -243,12 +136,7 @@ async function paginate(query, repo, config) {
243
136
  }));
244
137
  }
245
138
  if (query.filter) {
246
- const filter = parseFilter(query, config);
247
- queryBuilder.andWhere(new typeorm_1.Brackets((qb) => {
248
- for (const column in filter) {
249
- (0, filter_1.addWhereCondition)(qb, column, filter);
250
- }
251
- }));
139
+ (0, filter_1.addFilter)(queryBuilder, query, config.filterableColumns);
252
140
  }
253
141
  if (isPaginated) {
254
142
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"paginate.js","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paginate.js","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":"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"}