nestjs-paginate 5.0.0 → 5.0.2
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 +36 -59
- package/lib/filter.d.ts +29 -4
- package/lib/filter.js +68 -21
- package/lib/filter.js.map +1 -1
- package/lib/helper.d.ts +2 -1
- package/lib/helper.js +10 -6
- package/lib/helper.js.map +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -4
- package/lib/index.js.map +1 -1
- package/lib/paginate.d.ts +2 -1
- package/lib/paginate.js +22 -21
- package/lib/paginate.js.map +1 -1
- package/lib/paginate.spec.js +39 -40
- package/lib/paginate.spec.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/lib/operator.d.ts +0 -24
- package/lib/operator.js +0 -53
- package/lib/operator.js.map +0 -1
package/README.md
CHANGED
|
@@ -93,12 +93,6 @@ http://localhost:3000/cats?limit=5&page=2&sortBy=color:DESC&search=i&filter.age=
|
|
|
93
93
|
}
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
Array values for filter operators such as `$in` should be provided as comma-separated values:
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
http://localhost:3000/cats?filter.name=$in:George,Milo
|
|
100
|
-
```
|
|
101
|
-
|
|
102
96
|
#### Code
|
|
103
97
|
|
|
104
98
|
```ts
|
|
@@ -265,51 +259,17 @@ const paginateConfig: PaginateConfig<CatEntity> {
|
|
|
265
259
|
* Type: string
|
|
266
260
|
* Description: Allow user to choose between limit/offset and take/skip.
|
|
267
261
|
* Default: PaginationType.TAKE_AND_SKIP
|
|
262
|
+
*
|
|
263
|
+
* However, using limit/offset can return unexpected results.
|
|
264
|
+
* For more information see:
|
|
265
|
+
* [#477](https://github.com/ppetzold/nestjs-paginate/issues/477)
|
|
266
|
+
* [#4742](https://github.com/typeorm/typeorm/issues/4742)
|
|
267
|
+
* [#5670](https://github.com/typeorm/typeorm/issues/5670)
|
|
268
268
|
*/
|
|
269
269
|
paginationType: PaginationType.LIMIT_AND_OFFSET,
|
|
270
270
|
}
|
|
271
271
|
```
|
|
272
272
|
|
|
273
|
-
## Eager loading
|
|
274
|
-
|
|
275
|
-
Eager loading should work with typeorm's eager property out the box. Like so
|
|
276
|
-
|
|
277
|
-
```typescript
|
|
278
|
-
import { Entity, OneToMany } from 'typeorm'
|
|
279
|
-
|
|
280
|
-
@Entity()
|
|
281
|
-
export class CatEntity {
|
|
282
|
-
@PrimaryGeneratedColumn()
|
|
283
|
-
id: number
|
|
284
|
-
|
|
285
|
-
@Column('text')
|
|
286
|
-
name: string
|
|
287
|
-
|
|
288
|
-
@Column('text')
|
|
289
|
-
color: string
|
|
290
|
-
|
|
291
|
-
@Column('int')
|
|
292
|
-
age: number
|
|
293
|
-
|
|
294
|
-
@OneToMany(() => CatToyEntity, (catToy) => catToy.cat, {
|
|
295
|
-
eager: true,
|
|
296
|
-
})
|
|
297
|
-
toys: CatToyEntity[]
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// service
|
|
301
|
-
class CatService {
|
|
302
|
-
constructor(private readonly catsRepository: Repository<CatEntity>) {}
|
|
303
|
-
|
|
304
|
-
public findAll(query: PaginateQuery): Promise<Paginated<CatEntity>> {
|
|
305
|
-
return paginate(query, this.catsRepository, {
|
|
306
|
-
sortableColumns: ['id', 'name', 'color', 'age'],
|
|
307
|
-
loadEagerRelations: true, // set this property as true to enable the eager loading
|
|
308
|
-
})
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
```
|
|
312
|
-
|
|
313
273
|
## Usage with Query Builder
|
|
314
274
|
|
|
315
275
|
You can paginate custom queries by passing on the query builder:
|
|
@@ -351,16 +311,26 @@ const config: PaginateConfig<CatEntity> = {
|
|
|
351
311
|
const result = await paginate<CatEntity>(query, catRepo, config)
|
|
352
312
|
```
|
|
353
313
|
|
|
354
|
-
|
|
314
|
+
**Note:** Embedded columns on relations have to be wrapped with brackets:
|
|
355
315
|
|
|
356
|
-
|
|
316
|
+
```typescript
|
|
317
|
+
const config: PaginateConfig<CatEntity> = {
|
|
318
|
+
sortableColumns: ['id', 'name', 'toys.(size.height)', 'toys.(size.width)'],
|
|
319
|
+
searchableColumns: ['name'],
|
|
320
|
+
relations: ['toys'],
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Usage with Nested Relations
|
|
325
|
+
|
|
326
|
+
Similar as with relations, you can specify nested relations for sorting, filtering and searching:
|
|
357
327
|
|
|
358
328
|
### Example
|
|
359
329
|
|
|
360
330
|
#### Endpoint
|
|
361
331
|
|
|
362
332
|
```url
|
|
363
|
-
http://localhost:3000/cats?filter.home.pillows.color
|
|
333
|
+
http://localhost:3000/cats?filter.home.pillows.color=pink
|
|
364
334
|
```
|
|
365
335
|
|
|
366
336
|
#### Code
|
|
@@ -376,29 +346,36 @@ const config: PaginateConfig<CatEntity> = {
|
|
|
376
346
|
const result = await paginate<CatEntity>(query, catRepo, config)
|
|
377
347
|
```
|
|
378
348
|
|
|
379
|
-
## Usage
|
|
349
|
+
## Usage with Eager Loading
|
|
380
350
|
|
|
381
|
-
|
|
351
|
+
Eager loading should work with TypeORM's eager property out the box:
|
|
382
352
|
|
|
383
353
|
### Example
|
|
384
354
|
|
|
385
355
|
#### Code
|
|
386
356
|
|
|
387
357
|
```typescript
|
|
358
|
+
@Entity()
|
|
359
|
+
export class CatEntity {
|
|
360
|
+
// ...
|
|
361
|
+
|
|
362
|
+
@OneToMany(() => CatToyEntity, (catToy) => catToy.cat, {
|
|
363
|
+
eager: true,
|
|
364
|
+
})
|
|
365
|
+
toys: CatToyEntity[]
|
|
366
|
+
}
|
|
367
|
+
|
|
388
368
|
const config: PaginateConfig<CatEntity> = {
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
369
|
+
loadEagerRelations: true,
|
|
370
|
+
sortableColumns: ['id', 'name', 'toys.name'],
|
|
371
|
+
filterableColumns: {
|
|
372
|
+
'toys.name': [FilterOperator.IN],
|
|
373
|
+
},
|
|
392
374
|
}
|
|
393
375
|
|
|
394
376
|
const result = await paginate<CatEntity>(query, catRepo, config)
|
|
395
377
|
```
|
|
396
378
|
|
|
397
|
-
> However, using `limit`/`offset` can return unexpected results.
|
|
398
|
-
> For more information
|
|
399
|
-
> see [#477](https://github.com/ppetzold/nestjs-paginate/issues/477), [#4742](https://github.com/typeorm/typeorm/issues/4742)
|
|
400
|
-
> and [#5670](https://github.com/typeorm/typeorm/issues/5670).
|
|
401
|
-
|
|
402
379
|
## Single Filters
|
|
403
380
|
|
|
404
381
|
Filter operators must be whitelisted per column in `PaginateConfig`.
|
package/lib/filter.d.ts
CHANGED
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
import { FindOperator, SelectQueryBuilder } from 'typeorm';
|
|
2
2
|
import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause';
|
|
3
3
|
import { PaginateQuery } from './decorator';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
export declare enum FilterOperator {
|
|
5
|
+
EQ = "$eq",
|
|
6
|
+
GT = "$gt",
|
|
7
|
+
GTE = "$gte",
|
|
8
|
+
IN = "$in",
|
|
9
|
+
NULL = "$null",
|
|
10
|
+
LT = "$lt",
|
|
11
|
+
LTE = "$lte",
|
|
12
|
+
BTW = "$btw",
|
|
13
|
+
ILIKE = "$ilike",
|
|
14
|
+
SW = "$sw"
|
|
15
|
+
}
|
|
16
|
+
export declare function isOperator(value: unknown): value is FilterOperator;
|
|
17
|
+
export declare enum FilterSuffix {
|
|
18
|
+
NOT = "$not"
|
|
19
|
+
}
|
|
20
|
+
export declare function isSuffix(value: unknown): value is FilterSuffix;
|
|
21
|
+
export declare enum FilterComparator {
|
|
22
|
+
AND = "$and",
|
|
23
|
+
OR = "$or"
|
|
24
|
+
}
|
|
25
|
+
export declare function isComparator(value: unknown): value is FilterComparator;
|
|
26
|
+
export declare const OperatorSymbolToFunction: Map<FilterOperator | FilterSuffix, (...args: any[]) => FindOperator<string>>;
|
|
6
27
|
type Filter = {
|
|
7
28
|
comparator: FilterComparator;
|
|
8
29
|
findOperator: FindOperator<string>;
|
|
@@ -24,6 +45,10 @@ export declare function fixQueryParam(alias: string, column: string, filter: Fil
|
|
|
24
45
|
export declare function generatePredicateCondition(qb: SelectQueryBuilder<unknown>, column: string, filter: Filter, alias: string, isVirtualProperty?: boolean): WherePredicateOperator;
|
|
25
46
|
export declare function addWhereCondition<T>(qb: SelectQueryBuilder<T>, column: string, filter: ColumnsFilters): void;
|
|
26
47
|
export declare function getFilterTokens(raw?: string): FilterToken | null;
|
|
27
|
-
export declare function parseFilter
|
|
28
|
-
|
|
48
|
+
export declare function parseFilter(query: PaginateQuery, filterableColumns?: {
|
|
49
|
+
[column: string]: (FilterOperator | FilterSuffix)[];
|
|
50
|
+
}): ColumnsFilters;
|
|
51
|
+
export declare function addFilter<T>(qb: SelectQueryBuilder<T>, query: PaginateQuery, filterableColumns?: {
|
|
52
|
+
[column: string]: (FilterOperator | FilterSuffix)[];
|
|
53
|
+
}): SelectQueryBuilder<T>;
|
|
29
54
|
export {};
|
package/lib/filter.js
CHANGED
|
@@ -1,9 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addFilter = exports.parseFilter = exports.getFilterTokens = exports.addWhereCondition = exports.generatePredicateCondition = exports.fixQueryParam = void 0;
|
|
3
|
+
exports.addFilter = exports.parseFilter = exports.getFilterTokens = exports.addWhereCondition = exports.generatePredicateCondition = exports.fixQueryParam = exports.OperatorSymbolToFunction = exports.isComparator = exports.FilterComparator = exports.isSuffix = exports.FilterSuffix = exports.isOperator = exports.FilterOperator = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
4
5
|
const typeorm_1 = require("typeorm");
|
|
5
6
|
const helper_1 = require("./helper");
|
|
6
|
-
|
|
7
|
+
var FilterOperator;
|
|
8
|
+
(function (FilterOperator) {
|
|
9
|
+
FilterOperator["EQ"] = "$eq";
|
|
10
|
+
FilterOperator["GT"] = "$gt";
|
|
11
|
+
FilterOperator["GTE"] = "$gte";
|
|
12
|
+
FilterOperator["IN"] = "$in";
|
|
13
|
+
FilterOperator["NULL"] = "$null";
|
|
14
|
+
FilterOperator["LT"] = "$lt";
|
|
15
|
+
FilterOperator["LTE"] = "$lte";
|
|
16
|
+
FilterOperator["BTW"] = "$btw";
|
|
17
|
+
FilterOperator["ILIKE"] = "$ilike";
|
|
18
|
+
FilterOperator["SW"] = "$sw";
|
|
19
|
+
})(FilterOperator = exports.FilterOperator || (exports.FilterOperator = {}));
|
|
20
|
+
function isOperator(value) {
|
|
21
|
+
return (0, lodash_1.values)(FilterOperator).includes(value);
|
|
22
|
+
}
|
|
23
|
+
exports.isOperator = isOperator;
|
|
24
|
+
var FilterSuffix;
|
|
25
|
+
(function (FilterSuffix) {
|
|
26
|
+
FilterSuffix["NOT"] = "$not";
|
|
27
|
+
})(FilterSuffix = exports.FilterSuffix || (exports.FilterSuffix = {}));
|
|
28
|
+
function isSuffix(value) {
|
|
29
|
+
return (0, lodash_1.values)(FilterSuffix).includes(value);
|
|
30
|
+
}
|
|
31
|
+
exports.isSuffix = isSuffix;
|
|
32
|
+
var FilterComparator;
|
|
33
|
+
(function (FilterComparator) {
|
|
34
|
+
FilterComparator["AND"] = "$and";
|
|
35
|
+
FilterComparator["OR"] = "$or";
|
|
36
|
+
})(FilterComparator = exports.FilterComparator || (exports.FilterComparator = {}));
|
|
37
|
+
function isComparator(value) {
|
|
38
|
+
return (0, lodash_1.values)(FilterComparator).includes(value);
|
|
39
|
+
}
|
|
40
|
+
exports.isComparator = isComparator;
|
|
41
|
+
exports.OperatorSymbolToFunction = new Map([
|
|
42
|
+
[FilterOperator.EQ, typeorm_1.Equal],
|
|
43
|
+
[FilterOperator.GT, typeorm_1.MoreThan],
|
|
44
|
+
[FilterOperator.GTE, typeorm_1.MoreThanOrEqual],
|
|
45
|
+
[FilterOperator.IN, typeorm_1.In],
|
|
46
|
+
[FilterOperator.NULL, typeorm_1.IsNull],
|
|
47
|
+
[FilterOperator.LT, typeorm_1.LessThan],
|
|
48
|
+
[FilterOperator.LTE, typeorm_1.LessThanOrEqual],
|
|
49
|
+
[FilterOperator.BTW, typeorm_1.Between],
|
|
50
|
+
[FilterOperator.ILIKE, typeorm_1.ILike],
|
|
51
|
+
[FilterSuffix.NOT, typeorm_1.Not],
|
|
52
|
+
[FilterOperator.SW, typeorm_1.ILike],
|
|
53
|
+
]);
|
|
7
54
|
// This function is used to fix the query parameters when using relation, embeded or virtual properties
|
|
8
55
|
// It will replace the column name with the alias name and return the new parameters
|
|
9
56
|
function fixQueryParam(alias, column, filter, condition, parameters) {
|
|
@@ -54,7 +101,7 @@ function addWhereCondition(qb, column, filter) {
|
|
|
54
101
|
const parameters = fixQueryParam(alias, columnNamePerIteration, columnFilter, condition, {
|
|
55
102
|
[columnNamePerIteration]: columnFilter.findOperator.value,
|
|
56
103
|
});
|
|
57
|
-
if (columnFilter.comparator ===
|
|
104
|
+
if (columnFilter.comparator === FilterComparator.OR) {
|
|
58
105
|
qb.orWhere(qb['createWhereConditionExpression'](condition), parameters);
|
|
59
106
|
}
|
|
60
107
|
else {
|
|
@@ -68,9 +115,9 @@ function getFilterTokens(raw) {
|
|
|
68
115
|
return null;
|
|
69
116
|
}
|
|
70
117
|
const token = {
|
|
71
|
-
comparator:
|
|
118
|
+
comparator: FilterComparator.AND,
|
|
72
119
|
suffix: undefined,
|
|
73
|
-
operator:
|
|
120
|
+
operator: FilterOperator.EQ,
|
|
74
121
|
value: raw,
|
|
75
122
|
};
|
|
76
123
|
const MAX_OPERTATOR = 4; // max 4 operator es: $and:$not:$eq:$null
|
|
@@ -80,13 +127,13 @@ function getFilterTokens(raw) {
|
|
|
80
127
|
const notValue = [];
|
|
81
128
|
for (let i = 0; i < maxOperandCount; i++) {
|
|
82
129
|
const match = matches[i];
|
|
83
|
-
if (
|
|
130
|
+
if (isComparator(match)) {
|
|
84
131
|
token.comparator = match;
|
|
85
132
|
}
|
|
86
|
-
else if (
|
|
133
|
+
else if (isSuffix(match)) {
|
|
87
134
|
token.suffix = match;
|
|
88
135
|
}
|
|
89
|
-
else if (
|
|
136
|
+
else if (isOperator(match)) {
|
|
90
137
|
token.operator = match;
|
|
91
138
|
}
|
|
92
139
|
else {
|
|
@@ -96,7 +143,7 @@ function getFilterTokens(raw) {
|
|
|
96
143
|
}
|
|
97
144
|
if (notValue.length) {
|
|
98
145
|
token.value =
|
|
99
|
-
token.operator ===
|
|
146
|
+
token.operator === FilterOperator.NULL
|
|
100
147
|
? undefined
|
|
101
148
|
: raw.replace(`${notValue.join(OPERAND_SEPARATOR)}${OPERAND_SEPARATOR}`, '');
|
|
102
149
|
}
|
|
@@ -119,9 +166,9 @@ function parseFilter(query, filterableColumns) {
|
|
|
119
166
|
const token = getFilterTokens(raw);
|
|
120
167
|
if (!token ||
|
|
121
168
|
!(allowedOperators.includes(token.operator) ||
|
|
122
|
-
(token.suffix ===
|
|
169
|
+
(token.suffix === FilterSuffix.NOT &&
|
|
123
170
|
allowedOperators.includes(token.suffix) &&
|
|
124
|
-
token.operator ===
|
|
171
|
+
token.operator === FilterOperator.EQ) ||
|
|
125
172
|
(token.suffix &&
|
|
126
173
|
allowedOperators.includes(token.suffix) &&
|
|
127
174
|
allowedOperators.includes(token.operator)))) {
|
|
@@ -132,25 +179,25 @@ function parseFilter(query, filterableColumns) {
|
|
|
132
179
|
findOperator: undefined,
|
|
133
180
|
};
|
|
134
181
|
switch (token.operator) {
|
|
135
|
-
case
|
|
136
|
-
params.findOperator =
|
|
182
|
+
case FilterOperator.BTW:
|
|
183
|
+
params.findOperator = exports.OperatorSymbolToFunction.get(token.operator)(...token.value.split(','));
|
|
137
184
|
break;
|
|
138
|
-
case
|
|
139
|
-
params.findOperator =
|
|
185
|
+
case FilterOperator.IN:
|
|
186
|
+
params.findOperator = exports.OperatorSymbolToFunction.get(token.operator)(token.value.split(','));
|
|
140
187
|
break;
|
|
141
|
-
case
|
|
142
|
-
params.findOperator =
|
|
188
|
+
case FilterOperator.ILIKE:
|
|
189
|
+
params.findOperator = exports.OperatorSymbolToFunction.get(token.operator)(`%${token.value}%`);
|
|
143
190
|
break;
|
|
144
|
-
case
|
|
145
|
-
params.findOperator =
|
|
191
|
+
case FilterOperator.SW:
|
|
192
|
+
params.findOperator = exports.OperatorSymbolToFunction.get(token.operator)(`${token.value}%`);
|
|
146
193
|
break;
|
|
147
194
|
default:
|
|
148
|
-
params.findOperator =
|
|
195
|
+
params.findOperator = exports.OperatorSymbolToFunction.get(token.operator)(token.value);
|
|
149
196
|
}
|
|
150
197
|
filter[column] = [...(filter[column] || []), params];
|
|
151
198
|
if (token.suffix) {
|
|
152
199
|
const lastFilterElement = filter[column].length - 1;
|
|
153
|
-
filter[column][lastFilterElement].findOperator =
|
|
200
|
+
filter[column][lastFilterElement].findOperator = exports.OperatorSymbolToFunction.get(token.suffix)(filter[column][lastFilterElement].findOperator);
|
|
154
201
|
}
|
|
155
202
|
}
|
|
156
203
|
}
|
package/lib/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
|
package/lib/helper.d.ts
CHANGED
|
@@ -10,11 +10,12 @@ export type RelationColumn<T> = Extract<Column<T>, {
|
|
|
10
10
|
}[Column<T>]>;
|
|
11
11
|
export type Order<T> = [Column<T>, 'ASC' | 'DESC'];
|
|
12
12
|
export type SortBy<T> = Order<T>[];
|
|
13
|
+
export declare function isEntityKey<T>(entityColumns: Column<T>[], column: string): column is Column<T>;
|
|
13
14
|
export declare const positiveNumberOrDefault: (value: number | undefined, defaultValue: number, minValue?: 0 | 1) => number;
|
|
14
15
|
export type ColumnProperties = {
|
|
15
16
|
propertyPath?: string;
|
|
16
17
|
propertyName: string;
|
|
17
|
-
|
|
18
|
+
isNested: boolean;
|
|
18
19
|
column: string;
|
|
19
20
|
};
|
|
20
21
|
export declare function getPropertiesByColumnName(column: string): ColumnProperties;
|
package/lib/helper.js
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fixColumnAlias = exports.checkIsEmbedded = exports.checkIsRelation = exports.hasColumnWithPropertyPath = exports.includesAllPrimaryKeyColumns = exports.extractVirtualProperty = exports.getPropertiesByColumnName = exports.positiveNumberOrDefault = void 0;
|
|
3
|
+
exports.fixColumnAlias = exports.checkIsEmbedded = exports.checkIsRelation = exports.hasColumnWithPropertyPath = exports.includesAllPrimaryKeyColumns = exports.extractVirtualProperty = exports.getPropertiesByColumnName = exports.positiveNumberOrDefault = exports.isEntityKey = void 0;
|
|
4
|
+
function isEntityKey(entityColumns, column) {
|
|
5
|
+
return !!entityColumns.find((c) => c === column);
|
|
6
|
+
}
|
|
7
|
+
exports.isEntityKey = isEntityKey;
|
|
4
8
|
const positiveNumberOrDefault = (value, defaultValue, minValue = 0) => value === undefined || value < minValue ? defaultValue : value;
|
|
5
9
|
exports.positiveNumberOrDefault = positiveNumberOrDefault;
|
|
6
10
|
function getPropertiesByColumnName(column) {
|
|
7
11
|
const propertyPath = column.split('.');
|
|
8
12
|
if (propertyPath.length > 1) {
|
|
9
13
|
const propertyNamePath = propertyPath.slice(1);
|
|
10
|
-
let
|
|
14
|
+
let isNested = false, propertyName = propertyNamePath.join('.');
|
|
11
15
|
if (!propertyName.startsWith('(') && propertyNamePath.length > 1) {
|
|
12
|
-
|
|
16
|
+
isNested = true;
|
|
13
17
|
}
|
|
14
18
|
propertyName = propertyName.replace('(', '').replace(')', '');
|
|
15
19
|
return {
|
|
16
20
|
propertyPath: propertyPath[0],
|
|
17
21
|
propertyName,
|
|
18
|
-
|
|
22
|
+
isNested,
|
|
19
23
|
column: `${propertyPath[0]}.${propertyName}`,
|
|
20
24
|
};
|
|
21
25
|
}
|
|
22
26
|
else {
|
|
23
|
-
return { propertyName: propertyPath[0],
|
|
27
|
+
return { propertyName: propertyPath[0], isNested: false, column: propertyPath[0] };
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
exports.getPropertiesByColumnName = getPropertiesByColumnName;
|
|
@@ -73,7 +77,7 @@ function fixColumnAlias(properties, alias, isRelation = false, isVirtualProperty
|
|
|
73
77
|
if (isVirtualProperty && query) {
|
|
74
78
|
return `(${query(`${alias}_${properties.propertyPath}`)})`; // () is needed to avoid parameter conflict
|
|
75
79
|
}
|
|
76
|
-
else if ((isVirtualProperty && !query) || properties.
|
|
80
|
+
else if ((isVirtualProperty && !query) || properties.isNested) {
|
|
77
81
|
return `${alias}_${properties.propertyPath}_${properties.propertyName}`;
|
|
78
82
|
}
|
|
79
83
|
else {
|
package/lib/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -14,10 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.FilterComparator = exports.FilterOperator = void 0;
|
|
18
17
|
__exportStar(require("./decorator"), exports);
|
|
19
18
|
__exportStar(require("./paginate"), exports);
|
|
20
|
-
var operator_1 = require("./operator");
|
|
21
|
-
Object.defineProperty(exports, "FilterOperator", { enumerable: true, get: function () { return operator_1.FilterOperator; } });
|
|
22
|
-
Object.defineProperty(exports, "FilterComparator", { enumerable: true, get: function () { return operator_1.FilterComparator; } });
|
|
23
19
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,6CAA0B"}
|
package/lib/paginate.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Repository, SelectQueryBuilder, FindOptionsWhere, FindOptionsRelations, ObjectLiteral } from 'typeorm';
|
|
2
2
|
import { PaginateQuery } from './decorator';
|
|
3
3
|
import { Column, RelationColumn, SortBy } from './helper';
|
|
4
|
-
import { FilterOperator, FilterSuffix } from './
|
|
4
|
+
import { FilterOperator, FilterSuffix } from './filter';
|
|
5
|
+
export { FilterOperator, FilterSuffix };
|
|
5
6
|
export declare class Paginated<T> {
|
|
6
7
|
data: T[];
|
|
7
8
|
meta: {
|
package/lib/paginate.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.paginate = exports.DEFAULT_PAGINATE_TYPE = exports.NO_PAGINATION = exports.DEFAULT_LIMIT = exports.DEFAULT_MAX_LIMIT = exports.PaginationType = exports.Paginated = void 0;
|
|
3
|
+
exports.paginate = exports.DEFAULT_PAGINATE_TYPE = exports.NO_PAGINATION = exports.DEFAULT_LIMIT = exports.DEFAULT_MAX_LIMIT = exports.PaginationType = exports.Paginated = exports.FilterSuffix = exports.FilterOperator = void 0;
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const lodash_1 = require("lodash");
|
|
7
7
|
const querystring_1 = require("querystring");
|
|
8
8
|
const helper_1 = require("./helper");
|
|
9
9
|
const filter_1 = require("./filter");
|
|
10
|
+
Object.defineProperty(exports, "FilterOperator", { enumerable: true, get: function () { return filter_1.FilterOperator; } });
|
|
11
|
+
Object.defineProperty(exports, "FilterSuffix", { enumerable: true, get: function () { return filter_1.FilterSuffix; } });
|
|
10
12
|
const logger = new common_1.Logger('nestjs-paginate');
|
|
11
13
|
class Paginated {
|
|
12
14
|
}
|
|
@@ -51,16 +53,13 @@ async function paginate(query, repo, config) {
|
|
|
51
53
|
else {
|
|
52
54
|
path = queryOrigin + queryPath;
|
|
53
55
|
}
|
|
54
|
-
function isEntityKey(entityColumns, column) {
|
|
55
|
-
return !!entityColumns.find((c) => c === column);
|
|
56
|
-
}
|
|
57
56
|
if (config.sortableColumns.length < 1) {
|
|
58
57
|
logger.debug("Missing required 'sortableColumns' config.");
|
|
59
58
|
throw new common_1.ServiceUnavailableException();
|
|
60
59
|
}
|
|
61
60
|
if (query.sortBy) {
|
|
62
61
|
for (const order of query.sortBy) {
|
|
63
|
-
if (isEntityKey(config.sortableColumns, order[0]) && ['ASC', 'DESC'].includes(order[1])) {
|
|
62
|
+
if ((0, helper_1.isEntityKey)(config.sortableColumns, order[0]) && ['ASC', 'DESC'].includes(order[1])) {
|
|
64
63
|
sortBy.push(order);
|
|
65
64
|
}
|
|
66
65
|
}
|
|
@@ -68,18 +67,6 @@ async function paginate(query, repo, config) {
|
|
|
68
67
|
if (!sortBy.length) {
|
|
69
68
|
sortBy.push(...(config.defaultSortBy || [[config.sortableColumns[0], 'ASC']]));
|
|
70
69
|
}
|
|
71
|
-
if (config.searchableColumns) {
|
|
72
|
-
if (query.searchBy) {
|
|
73
|
-
for (const column of query.searchBy) {
|
|
74
|
-
if (isEntityKey(config.searchableColumns, column)) {
|
|
75
|
-
searchBy.push(column);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
searchBy.push(...config.searchableColumns);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
70
|
let [items, totalItems] = [[], 0];
|
|
84
71
|
const queryBuilder = repo instanceof typeorm_1.Repository ? repo.createQueryBuilder('__root') : repo;
|
|
85
72
|
if (repo instanceof typeorm_1.Repository && !config.relations && config.loadEagerRelations === true) {
|
|
@@ -88,10 +75,12 @@ async function paginate(query, repo, config) {
|
|
|
88
75
|
}
|
|
89
76
|
}
|
|
90
77
|
if (isPaginated) {
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
//
|
|
78
|
+
// Allow user to choose between limit/offset and take/skip.
|
|
79
|
+
// However, using limit/offset can return unexpected results.
|
|
80
|
+
// For more information see:
|
|
81
|
+
// [#477](https://github.com/ppetzold/nestjs-paginate/issues/477)
|
|
82
|
+
// [#4742](https://github.com/typeorm/typeorm/issues/4742)
|
|
83
|
+
// [#5670](https://github.com/typeorm/typeorm/issues/5670)
|
|
95
84
|
if (paginationType === PaginationType.LIMIT_AND_OFFSET) {
|
|
96
85
|
queryBuilder.limit(limit).offset((page - 1) * limit);
|
|
97
86
|
}
|
|
@@ -158,6 +147,18 @@ async function paginate(query, repo, config) {
|
|
|
158
147
|
if (config.withDeleted) {
|
|
159
148
|
queryBuilder.withDeleted();
|
|
160
149
|
}
|
|
150
|
+
if (config.searchableColumns) {
|
|
151
|
+
if (query.searchBy) {
|
|
152
|
+
for (const column of query.searchBy) {
|
|
153
|
+
if ((0, helper_1.isEntityKey)(config.searchableColumns, column)) {
|
|
154
|
+
searchBy.push(column);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
searchBy.push(...config.searchableColumns);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
161
162
|
if (query.search && searchBy.length) {
|
|
162
163
|
queryBuilder.andWhere(new typeorm_1.Brackets((qb) => {
|
|
163
164
|
for (const column of searchBy) {
|
package/lib/paginate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginate.js","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":";;;AAAA,qCAQgB;AAEhB,2CAAoE;AACpE,mCAAgC;AAChC,6CAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"paginate.js","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":"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"}
|