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 +29 -2
- package/lib/filter.d.ts +25 -3
- package/lib/filter.js +126 -12
- package/lib/filter.js.map +1 -1
- package/lib/helper.d.ts +1 -1
- package/lib/operator.d.ts +24 -0
- package/lib/operator.js +53 -0
- package/lib/operator.js.map +1 -0
- package/lib/paginate.d.ts +3 -17
- package/lib/paginate.js +2 -114
- package/lib/paginate.js.map +1 -1
- package/lib/paginate.spec.js +212 -53
- package/lib/paginate.spec.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
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
|
-
|
|
4
|
-
|
|
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<
|
|
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
|
-
|
|
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
|
|
21
|
-
[column + '_to']: filter
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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":";;;
|
|
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>>;
|
package/lib/operator.js
ADDED
|
@@ -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,
|
|
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.
|
|
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
|
-
|
|
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
|
;
|
package/lib/paginate.js.map
CHANGED
|
@@ -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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"}
|