nestjs-paginate 6.0.0 → 6.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 +9 -8
- package/lib/__tests__/cat.entity.js +2 -4
- package/lib/__tests__/cat.entity.js.map +1 -1
- package/lib/helper.d.ts +4 -0
- package/lib/helper.js +16 -1
- package/lib/helper.js.map +1 -1
- package/lib/paginate.js +32 -38
- package/lib/paginate.js.map +1 -1
- package/lib/paginate.spec.js +48 -23
- package/lib/paginate.spec.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -231,6 +231,15 @@ const paginateConfig: PaginateConfig<CatEntity> {
|
|
|
231
231
|
*/
|
|
232
232
|
relations: [],
|
|
233
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Required: false
|
|
236
|
+
* Type: boolean
|
|
237
|
+
* Default: false
|
|
238
|
+
* Description: Load eager relations using TypeORM's eager property.
|
|
239
|
+
* Only works if `relations` is not defined.
|
|
240
|
+
*/
|
|
241
|
+
loadEagerRelations: true,
|
|
242
|
+
|
|
234
243
|
/**
|
|
235
244
|
* Required: false
|
|
236
245
|
* Type: boolean
|
|
@@ -253,14 +262,6 @@ const paginateConfig: PaginateConfig<CatEntity> {
|
|
|
253
262
|
* Description: Overrides the origin of absolute resource links if set.
|
|
254
263
|
*/
|
|
255
264
|
origin: 'http://cats.example',
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Required: false
|
|
259
|
-
* Type: boolean
|
|
260
|
-
* Default: false
|
|
261
|
-
* Description: Load eager relations using TypeORM's eager property.
|
|
262
|
-
*/
|
|
263
|
-
loadEagerRelations: true
|
|
264
265
|
}
|
|
265
266
|
```
|
|
266
267
|
|
|
@@ -46,10 +46,8 @@ __decorate([
|
|
|
46
46
|
__metadata("design:type", Number)
|
|
47
47
|
], CatEntity.prototype, "age", void 0);
|
|
48
48
|
__decorate([
|
|
49
|
-
(0, typeorm_1.Column)({
|
|
50
|
-
|
|
51
|
-
enum: CutenessLevel,
|
|
52
|
-
}),
|
|
49
|
+
(0, typeorm_1.Column)({ type: 'text' }) // We don't use enum type as it makes it easier when testing across different db drivers.
|
|
50
|
+
,
|
|
53
51
|
__metadata("design:type", String)
|
|
54
52
|
], CatEntity.prototype, "cutenessLevel", void 0);
|
|
55
53
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAYgB;AAChB,qDAA+C;AAC/C,uDAAiD;AACjD,6CAAwC;AAExC,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,8BAAa,CAAA;AACjB,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAGM,IAAM,SAAS,iBAAf,MAAM,SAAS;
|
|
1
|
+
{"version":3,"file":"cat.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAYgB;AAChB,qDAA+C;AAC/C,uDAAiD;AACjD,6CAAwC;AAExC,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,8BAAa,CAAA;AACjB,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAGM,IAAM,SAAS,iBAAf,MAAM,SAAS;IAyCV,SAAS;;QACb,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,EAAE,CAAA,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;SACnB;IACL,CAAC;CACJ,CAAA;AA7CG;IAAC,IAAA,gCAAsB,GAAE;;qCACf;AAEV;IAAC,IAAA,gBAAM,GAAE;;uCACG;AAEZ;IAAC,IAAA,gBAAM,GAAE;;wCACI;AAEb;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACT;AAElB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,yFAAyF;;;gDACvF;AAE5B;IAAC,IAAA,gBAAM,EAAC,GAAG,EAAE,CAAC,sBAAS,CAAC;8BAClB,sBAAS;uCAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,6BAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QACnD,KAAK,EAAE,IAAI;KACd,CAAC;;uCACkB;AAEpB;IAAC,IAAA,kBAAQ,EAAC,GAAG,EAAE,CAAC,+BAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAA,oBAAU,GAAE;8BACP,+BAAa;uCAAA;AAEnB;IAAC,IAAA,0BAAgB,GAAE;;4CACF;AAEjB;IAAC,IAAA,0BAAgB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACnB;AAElB;IAAC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,WAAS,CAAC;IAC3B,IAAA,mBAAS,GAAE;;0CACQ;AAEpB;IAAC,IAAA,mBAAS,GAAE;IACZ,yDAAyD;IACzD,mGAAmG;;;;;0CAKlG;AA7CQ,SAAS;IADrB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;GACX,SAAS,CA8CrB;AA9CY,8BAAS"}
|
package/lib/helper.d.ts
CHANGED
|
@@ -28,4 +28,8 @@ export declare function hasColumnWithPropertyPath(qb: SelectQueryBuilder<unknown
|
|
|
28
28
|
export declare function checkIsRelation(qb: SelectQueryBuilder<unknown>, propertyPath: string): boolean;
|
|
29
29
|
export declare function checkIsEmbedded(qb: SelectQueryBuilder<unknown>, propertyPath: string): boolean;
|
|
30
30
|
export declare function fixColumnAlias(properties: ColumnProperties, alias: string, isRelation?: boolean, isVirtualProperty?: boolean, isEmbedded?: boolean, query?: ColumnMetadata['query']): string;
|
|
31
|
+
export declare function getQueryUrlComponents(path: string): {
|
|
32
|
+
queryOrigin: string;
|
|
33
|
+
queryPath: string;
|
|
34
|
+
};
|
|
31
35
|
export {};
|
package/lib/helper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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 = exports.isEntityKey = void 0;
|
|
3
|
+
exports.getQueryUrlComponents = exports.fixColumnAlias = exports.checkIsEmbedded = exports.checkIsRelation = exports.hasColumnWithPropertyPath = exports.includesAllPrimaryKeyColumns = exports.extractVirtualProperty = exports.getPropertiesByColumnName = exports.positiveNumberOrDefault = exports.isEntityKey = void 0;
|
|
4
4
|
function isEntityKey(entityColumns, column) {
|
|
5
5
|
return !!entityColumns.find((c) => c === column);
|
|
6
6
|
}
|
|
@@ -95,4 +95,19 @@ function fixColumnAlias(properties, alias, isRelation = false, isVirtualProperty
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
exports.fixColumnAlias = fixColumnAlias;
|
|
98
|
+
function getQueryUrlComponents(path) {
|
|
99
|
+
const r = new RegExp('^(?:[a-z+]+:)?//', 'i');
|
|
100
|
+
let queryOrigin = '';
|
|
101
|
+
let queryPath = '';
|
|
102
|
+
if (r.test(path)) {
|
|
103
|
+
const url = new URL(path);
|
|
104
|
+
queryOrigin = url.origin;
|
|
105
|
+
queryPath = url.pathname;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
queryPath = path;
|
|
109
|
+
}
|
|
110
|
+
return { queryOrigin, queryPath };
|
|
111
|
+
}
|
|
112
|
+
exports.getQueryUrlComponents = getQueryUrlComponents;
|
|
98
113
|
//# sourceMappingURL=helper.js.map
|
package/lib/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
package/lib/paginate.js
CHANGED
|
@@ -25,43 +25,9 @@ async function paginate(query, repo, config) {
|
|
|
25
25
|
const limit = isPaginated ? Math.min(queryLimit || defaultLimit, maxLimit || exports.DEFAULT_MAX_LIMIT) : exports.NO_PAGINATION;
|
|
26
26
|
const sortBy = [];
|
|
27
27
|
const searchBy = [];
|
|
28
|
-
let path;
|
|
29
|
-
const r = new RegExp('^(?:[a-z+]+:)?//', 'i');
|
|
30
|
-
let queryOrigin = '';
|
|
31
|
-
let queryPath = '';
|
|
32
|
-
if (r.test(query.path)) {
|
|
33
|
-
const url = new URL(query.path);
|
|
34
|
-
queryOrigin = url.origin;
|
|
35
|
-
queryPath = url.pathname;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
queryPath = query.path;
|
|
39
|
-
}
|
|
40
|
-
if (config.relativePath) {
|
|
41
|
-
path = queryPath;
|
|
42
|
-
}
|
|
43
|
-
else if (config.origin) {
|
|
44
|
-
path = config.origin + queryPath;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
path = queryOrigin + queryPath;
|
|
48
|
-
}
|
|
49
|
-
if (config.sortableColumns.length < 1) {
|
|
50
|
-
logger.debug("Missing required 'sortableColumns' config.");
|
|
51
|
-
throw new common_1.ServiceUnavailableException();
|
|
52
|
-
}
|
|
53
|
-
if (query.sortBy) {
|
|
54
|
-
for (const order of query.sortBy) {
|
|
55
|
-
if ((0, helper_1.isEntityKey)(config.sortableColumns, order[0]) && ['ASC', 'DESC'].includes(order[1])) {
|
|
56
|
-
sortBy.push(order);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (!sortBy.length) {
|
|
61
|
-
sortBy.push(...(config.defaultSortBy || [[config.sortableColumns[0], 'ASC']]));
|
|
62
|
-
}
|
|
63
28
|
let [items, totalItems] = [[], 0];
|
|
64
29
|
const queryBuilder = repo instanceof typeorm_1.Repository ? repo.createQueryBuilder('__root') : repo;
|
|
30
|
+
const isPostgres = ['postgres', 'cockroachdb'].includes(queryBuilder.connection.options.type);
|
|
65
31
|
if (repo instanceof typeorm_1.Repository && !config.relations && config.loadEagerRelations === true) {
|
|
66
32
|
if (!config.relations) {
|
|
67
33
|
typeorm_1.FindOptionsUtils.joinEagerRelations(queryBuilder, queryBuilder.alias, repo.metadata);
|
|
@@ -92,16 +58,33 @@ async function paginate(query, repo, config) {
|
|
|
92
58
|
createQueryBuilderRelations(queryBuilder.alias, config.relations);
|
|
93
59
|
}
|
|
94
60
|
}
|
|
95
|
-
let nullSort = undefined;
|
|
61
|
+
let nullSort = isPostgres ? 'NULLS FIRST' : undefined;
|
|
96
62
|
if (config.nullSort) {
|
|
97
63
|
nullSort = config.nullSort === 'last' ? 'NULLS LAST' : 'NULLS FIRST';
|
|
98
64
|
}
|
|
65
|
+
if (config.sortableColumns.length < 1) {
|
|
66
|
+
logger.debug("Missing required 'sortableColumns' config.");
|
|
67
|
+
throw new common_1.ServiceUnavailableException();
|
|
68
|
+
}
|
|
69
|
+
if (query.sortBy) {
|
|
70
|
+
for (const order of query.sortBy) {
|
|
71
|
+
if ((0, helper_1.isEntityKey)(config.sortableColumns, order[0]) && ['ASC', 'DESC'].includes(order[1])) {
|
|
72
|
+
sortBy.push(order);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!sortBy.length) {
|
|
77
|
+
sortBy.push(...(config.defaultSortBy || [[config.sortableColumns[0], 'ASC']]));
|
|
78
|
+
}
|
|
99
79
|
for (const order of sortBy) {
|
|
100
80
|
const columnProperties = (0, helper_1.getPropertiesByColumnName)(order[0]);
|
|
101
81
|
const { isVirtualProperty } = (0, helper_1.extractVirtualProperty)(queryBuilder, columnProperties);
|
|
102
82
|
const isRelation = (0, helper_1.checkIsRelation)(queryBuilder, columnProperties.propertyPath);
|
|
103
83
|
const isEmbeded = (0, helper_1.checkIsEmbedded)(queryBuilder, columnProperties.propertyPath);
|
|
104
|
-
|
|
84
|
+
let alias = (0, helper_1.fixColumnAlias)(columnProperties, queryBuilder.alias, isRelation, isVirtualProperty, isEmbeded);
|
|
85
|
+
if (isVirtualProperty) {
|
|
86
|
+
alias = `"${alias}"`;
|
|
87
|
+
}
|
|
105
88
|
queryBuilder.addOrderBy(alias, order[1], nullSort);
|
|
106
89
|
}
|
|
107
90
|
// When we partial select the columns (main or relation) we must add the primary key column otherwise
|
|
@@ -153,7 +136,7 @@ async function paginate(query, repo, config) {
|
|
|
153
136
|
operator: 'ilike',
|
|
154
137
|
parameters: [alias, `:${property.column}`],
|
|
155
138
|
};
|
|
156
|
-
if (
|
|
139
|
+
if (isPostgres) {
|
|
157
140
|
condition.parameters[0] = `CAST(${condition.parameters[0]} AS text)`;
|
|
158
141
|
}
|
|
159
142
|
qb.orWhere(qb['createWhereConditionExpression'](condition), {
|
|
@@ -172,6 +155,17 @@ async function paginate(query, repo, config) {
|
|
|
172
155
|
else {
|
|
173
156
|
items = await queryBuilder.getMany();
|
|
174
157
|
}
|
|
158
|
+
let path;
|
|
159
|
+
const { queryOrigin, queryPath } = (0, helper_1.getQueryUrlComponents)(query.path);
|
|
160
|
+
if (config.relativePath) {
|
|
161
|
+
path = queryPath;
|
|
162
|
+
}
|
|
163
|
+
else if (config.origin) {
|
|
164
|
+
path = config.origin + queryPath;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
path = queryOrigin + queryPath;
|
|
168
|
+
}
|
|
175
169
|
const sortByQuery = sortBy.map((order) => `&sortBy=${order.join(':')}`).join('');
|
|
176
170
|
const searchQuery = query.search ? `&search=${query.search}` : '';
|
|
177
171
|
const searchByQuery = query.searchBy && searchBy.length ? searchBy.map((column) => `&searchBy=${column}`).join('') : '';
|
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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"}
|
package/lib/paginate.spec.js
CHANGED
|
@@ -32,7 +32,7 @@ describe('paginate', () => {
|
|
|
32
32
|
: {
|
|
33
33
|
type: 'sqlite',
|
|
34
34
|
database: ':memory:',
|
|
35
|
-
})), { synchronize: true, logging:
|
|
35
|
+
})), { synchronize: true, logging: true, entities: [cat_entity_1.CatEntity, cat_toy_entity_1.CatToyEntity, cat_home_entity_1.CatHomeEntity, cat_home_pillow_entity_1.CatHomePillowEntity] }));
|
|
36
36
|
await dataSource.initialize();
|
|
37
37
|
catRepo = dataSource.getRepository(cat_entity_1.CatEntity);
|
|
38
38
|
catToyRepo = dataSource.getRepository(cat_toy_entity_1.CatToyEntity);
|
|
@@ -96,29 +96,12 @@ describe('paginate', () => {
|
|
|
96
96
|
// add friends to Milo
|
|
97
97
|
await catRepo.save(Object.assign(Object.assign({}, cats[0]), { friends: cats.slice(1) }));
|
|
98
98
|
});
|
|
99
|
-
// TODO: Make all tests pass postgres driver.
|
|
100
99
|
if (process.env.DB === 'postgres') {
|
|
101
|
-
it('should return result based on search term including a camelcase named column', async () => {
|
|
102
|
-
const config = {
|
|
103
|
-
sortableColumns: ['id', 'name', 'color'],
|
|
104
|
-
searchableColumns: ['cutenessLevel'],
|
|
105
|
-
};
|
|
106
|
-
const query = {
|
|
107
|
-
path: '',
|
|
108
|
-
search: 'hi',
|
|
109
|
-
};
|
|
110
|
-
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
111
|
-
expect(result.meta.search).toStrictEqual('hi');
|
|
112
|
-
expect(result.data).toStrictEqual([cats[0], cats[2], cats[4]]);
|
|
113
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&search=hi');
|
|
114
|
-
});
|
|
115
100
|
afterAll(async () => {
|
|
116
101
|
const entities = dataSource.entityMetadatas;
|
|
117
102
|
const tableNames = entities.map((entity) => `"${entity.tableName}"`).join(', ');
|
|
118
|
-
await dataSource.query(`TRUNCATE ${tableNames} CASCADE;`);
|
|
103
|
+
await dataSource.query(`TRUNCATE ${tableNames} RESTART IDENTITY CASCADE;`);
|
|
119
104
|
});
|
|
120
|
-
// We end postgres coverage here. See TODO above.
|
|
121
|
-
return;
|
|
122
105
|
}
|
|
123
106
|
it('should return an instance of Paginated', async () => {
|
|
124
107
|
const config = {
|
|
@@ -398,6 +381,24 @@ describe('paginate', () => {
|
|
|
398
381
|
]);
|
|
399
382
|
expect(result.data).toStrictEqual([cats[3], cats[4], cats[1], cats[0], cats[2]]);
|
|
400
383
|
});
|
|
384
|
+
it('should sort result by camelcase columns', async () => {
|
|
385
|
+
const config = {
|
|
386
|
+
sortableColumns: ['cutenessLevel', 'name'],
|
|
387
|
+
};
|
|
388
|
+
const query = {
|
|
389
|
+
path: '',
|
|
390
|
+
sortBy: [
|
|
391
|
+
['cutenessLevel', 'ASC'],
|
|
392
|
+
['name', 'ASC'],
|
|
393
|
+
],
|
|
394
|
+
};
|
|
395
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
396
|
+
expect(result.meta.sortBy).toStrictEqual([
|
|
397
|
+
['cutenessLevel', 'ASC'],
|
|
398
|
+
['name', 'ASC'],
|
|
399
|
+
]);
|
|
400
|
+
expect(result.data).toStrictEqual([cats[4], cats[0], cats[2], cats[3], cats[1]]);
|
|
401
|
+
});
|
|
401
402
|
it('should return result based on search term', async () => {
|
|
402
403
|
const config = {
|
|
403
404
|
sortableColumns: ['id', 'name', 'color'],
|
|
@@ -412,6 +413,20 @@ describe('paginate', () => {
|
|
|
412
413
|
expect(result.data).toStrictEqual([cats[0], cats[1], cats[3], cats[4]]);
|
|
413
414
|
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&search=i');
|
|
414
415
|
});
|
|
416
|
+
it('should return result based on search term on a camelcase named column', async () => {
|
|
417
|
+
const config = {
|
|
418
|
+
sortableColumns: ['id', 'name', 'color'],
|
|
419
|
+
searchableColumns: ['cutenessLevel'],
|
|
420
|
+
};
|
|
421
|
+
const query = {
|
|
422
|
+
path: '',
|
|
423
|
+
search: 'hi',
|
|
424
|
+
};
|
|
425
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
426
|
+
expect(result.meta.search).toStrictEqual('hi');
|
|
427
|
+
expect(result.data).toStrictEqual([cats[0], cats[2], cats[4]]);
|
|
428
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&search=hi');
|
|
429
|
+
});
|
|
415
430
|
it('should not result in a sql syntax error when attempting a sql injection', async () => {
|
|
416
431
|
const config = {
|
|
417
432
|
sortableColumns: ['id', 'name', 'color'],
|
|
@@ -442,12 +457,16 @@ describe('paginate', () => {
|
|
|
442
457
|
it('should return result based on search term on one-to-many relation', async () => {
|
|
443
458
|
const config = {
|
|
444
459
|
relations: ['toys'],
|
|
445
|
-
sortableColumns: ['id', '
|
|
460
|
+
sortableColumns: ['id', 'toys.id'],
|
|
446
461
|
searchableColumns: ['name', 'toys.name'],
|
|
447
462
|
};
|
|
448
463
|
const query = {
|
|
449
464
|
path: '',
|
|
450
465
|
search: 'Mouse',
|
|
466
|
+
sortBy: [
|
|
467
|
+
['id', 'ASC'],
|
|
468
|
+
['toys.id', 'DESC'],
|
|
469
|
+
],
|
|
451
470
|
};
|
|
452
471
|
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
453
472
|
expect(result.meta.search).toStrictEqual('Mouse');
|
|
@@ -456,7 +475,7 @@ describe('paginate', () => {
|
|
|
456
475
|
const toy2 = (0, lodash_1.clone)(catToys[2]);
|
|
457
476
|
delete toy2.cat;
|
|
458
477
|
expect(result.data).toStrictEqual([Object.assign((0, lodash_1.clone)(cats[0]), { toys: [toy2, toy] })]);
|
|
459
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&search=Mouse');
|
|
478
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&sortBy=toys.id:DESC&search=Mouse');
|
|
460
479
|
});
|
|
461
480
|
it('should return result based on search term on one-to-one relation', async () => {
|
|
462
481
|
const config = {
|
|
@@ -752,7 +771,7 @@ describe('paginate', () => {
|
|
|
752
771
|
});
|
|
753
772
|
it('should return result based on sort on embedded entity when other relations loaded', async () => {
|
|
754
773
|
const config = {
|
|
755
|
-
sortableColumns: ['id', 'name', 'size.height', 'size.length', 'size.width'],
|
|
774
|
+
sortableColumns: ['id', 'name', 'size.height', 'size.length', 'size.width', 'toys.(size.height)'],
|
|
756
775
|
searchableColumns: ['name'],
|
|
757
776
|
relations: ['home', 'toys'],
|
|
758
777
|
};
|
|
@@ -761,6 +780,7 @@ describe('paginate', () => {
|
|
|
761
780
|
sortBy: [
|
|
762
781
|
['size.height', 'DESC'],
|
|
763
782
|
['size.length', 'DESC'],
|
|
783
|
+
['toys.(size.height)', 'DESC'],
|
|
764
784
|
],
|
|
765
785
|
};
|
|
766
786
|
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
@@ -787,7 +807,7 @@ describe('paginate', () => {
|
|
|
787
807
|
copyCats[1].toys = [copyToys[3]];
|
|
788
808
|
const orderedCats = [copyCats[3], copyCats[1], copyCats[2], copyCats[0], copyCats[4]];
|
|
789
809
|
expect(result.data).toStrictEqual(orderedCats);
|
|
790
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=size.height:DESC&sortBy=size.length:DESC');
|
|
810
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=size.height:DESC&sortBy=size.length:DESC&sortBy=toys.(size.height):DESC');
|
|
791
811
|
});
|
|
792
812
|
it('should return result based on sort on embedded entity on one-to-many relation', async () => {
|
|
793
813
|
const config = {
|
|
@@ -1521,6 +1541,11 @@ describe('paginate', () => {
|
|
|
1521
1541
|
expect(result.data).toStrictEqual(expectedResult);
|
|
1522
1542
|
expect(result.links.current).toBe('?page=1&limit=20&sortBy=home.countCat:ASC');
|
|
1523
1543
|
});
|
|
1544
|
+
// TODO: Make all tests pass postgres driver.
|
|
1545
|
+
if (process.env.DB === 'postgres') {
|
|
1546
|
+
// We end postgres coverage here. See TODO above.
|
|
1547
|
+
return;
|
|
1548
|
+
}
|
|
1524
1549
|
it('should return result based on or between range filter', async () => {
|
|
1525
1550
|
const config = {
|
|
1526
1551
|
sortableColumns: ['id'],
|