nestjs-paginate 8.1.0 → 8.1.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 +3 -6
- package/lib/paginate.js +4 -4
- package/lib/paginate.js.map +1 -1
- package/lib/paginate.spec.js +175 -137
- package/lib/paginate.spec.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -260,14 +260,11 @@ const paginateConfig: PaginateConfig<CatEntity> {
|
|
|
260
260
|
* Required: false
|
|
261
261
|
* Type: string
|
|
262
262
|
* Description: Allow user to choose between limit/offset and take/skip.
|
|
263
|
-
* Default: PaginationType.
|
|
263
|
+
* Default: PaginationType.TAKE_AND_SKIP
|
|
264
264
|
*
|
|
265
|
-
* However, using
|
|
266
|
-
* For more information see:
|
|
267
|
-
* [#4742](https://github.com/typeorm/typeorm/issues/4742)
|
|
268
|
-
* [#5670](https://github.com/typeorm/typeorm/issues/5670)
|
|
265
|
+
* However, using limit/offset can cause problems with relations.
|
|
269
266
|
*/
|
|
270
|
-
paginationType: PaginationType.
|
|
267
|
+
paginationType: PaginationType.LIMIT_AND_OFFSET,
|
|
271
268
|
|
|
272
269
|
/**
|
|
273
270
|
* Required: false
|
package/lib/paginate.js
CHANGED
|
@@ -40,12 +40,12 @@ async function paginate(query, repo, config) {
|
|
|
40
40
|
}
|
|
41
41
|
if (isPaginated) {
|
|
42
42
|
// Allow user to choose between limit/offset and take/skip.
|
|
43
|
-
// However, using
|
|
44
|
-
if (config.paginationType === PaginationType.
|
|
45
|
-
queryBuilder.
|
|
43
|
+
// However, using limit/offset can cause problems when joining one-to-many etc.
|
|
44
|
+
if (config.paginationType === PaginationType.LIMIT_AND_OFFSET) {
|
|
45
|
+
queryBuilder.limit(limit).offset((page - 1) * limit);
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
|
-
queryBuilder.
|
|
48
|
+
queryBuilder.take(limit).skip((page - 1) * limit);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
if (config.relations) {
|
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,qCAciB;AACjB,qCAAkE;AAIzD,+FAJW,uBAAc,OAIX;AAAE,6FAJW,qBAAY,OAIX;AAFrC,MAAM,MAAM,GAAW,IAAI,eAAM,CAAC,iBAAiB,CAAC,CAAA;AAIpD,MAAa,SAAS;CAoBrB;AApBD,8BAoBC;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,4CAA0B,CAAA;IAC1B,wCAAsB,CAAA;AAC1B,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAsBY,QAAA,iBAAiB,GAAG,GAAG,CAAA;AACvB,QAAA,aAAa,GAAG,EAAE,CAAA;AAClB,QAAA,aAAa,GAAG,CAAC,CAAA;AAEvB,KAAK,UAAU,QAAQ,CAC1B,KAAoB,EACpB,IAA2C,EAC3C,MAAyB;;IAEzB,MAAM,IAAI,GAAG,IAAA,gCAAuB,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,qBAAa,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAA,gCAAuB,EAAC,MAAM,CAAC,QAAQ,EAAE,yBAAiB,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,IAAA,gCAAuB,EAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAErE,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,KAAK,qBAAa,IAAI,QAAQ,KAAK,qBAAa,CAAC,CAAA;IAEjF,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY,EAAE,QAAQ,IAAI,yBAAiB,CAAC,CAAC,CAAC,CAAC,qBAAa,CAAA;IAE/G,MAAM,MAAM,GAAG,EAAe,CAAA;IAC9B,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAEhC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAEhD,MAAM,YAAY,GAAG,IAAI,YAAY,oBAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE1F,IAAI,IAAI,YAAY,oBAAU,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI,EAAE;QACvF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACnB,0BAAgB,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;SACvF;KACJ;IAED,IAAI,WAAW,EAAE;QACb,2DAA2D;QAC3D
|
|
1
|
+
{"version":3,"file":"paginate.js","sourceRoot":"","sources":["../src/paginate.ts"],"names":[],"mappings":"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"}
|
package/lib/paginate.spec.js
CHANGED
|
@@ -139,7 +139,6 @@ describe('paginate', () => {
|
|
|
139
139
|
const config = {
|
|
140
140
|
sortableColumns: ['id'],
|
|
141
141
|
defaultSortBy: [['id', 'ASC']],
|
|
142
|
-
defaultLimit: 1,
|
|
143
142
|
};
|
|
144
143
|
const query = {
|
|
145
144
|
path: '',
|
|
@@ -150,6 +149,28 @@ describe('paginate', () => {
|
|
|
150
149
|
.from(cat_entity_1.CatEntity, 'cats')
|
|
151
150
|
.where('cats.color = :color', { color: 'white' });
|
|
152
151
|
const result = await (0, paginate_1.paginate)(query, queryBuilder, config);
|
|
152
|
+
expect(result.data).toStrictEqual(cats.slice(3, 5));
|
|
153
|
+
});
|
|
154
|
+
it('should accept query builder and work with query filter', async () => {
|
|
155
|
+
const config = {
|
|
156
|
+
sortableColumns: ['id'],
|
|
157
|
+
defaultSortBy: [['id', 'ASC']],
|
|
158
|
+
filterableColumns: {
|
|
159
|
+
'size.height': true,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
const query = {
|
|
163
|
+
path: '',
|
|
164
|
+
filter: {
|
|
165
|
+
'size.height': '$gte:20',
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
const queryBuilder = await dataSource
|
|
169
|
+
.createQueryBuilder()
|
|
170
|
+
.select('cats')
|
|
171
|
+
.from(cat_entity_1.CatEntity, 'cats')
|
|
172
|
+
.where('cats.color = :color', { color: 'white' });
|
|
173
|
+
const result = await (0, paginate_1.paginate)(query, queryBuilder, config);
|
|
153
174
|
expect(result.data).toStrictEqual(cats.slice(3, 4));
|
|
154
175
|
});
|
|
155
176
|
it('should default to page 1, if negative page is given', async () => {
|
|
@@ -243,6 +264,19 @@ describe('paginate', () => {
|
|
|
243
264
|
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
244
265
|
expect(result.data).toStrictEqual(cats.slice(0, 2));
|
|
245
266
|
});
|
|
267
|
+
it('should return correct result for limited one-to-many relations', async () => {
|
|
268
|
+
const config = {
|
|
269
|
+
relations: ['toys'],
|
|
270
|
+
sortableColumns: ['id', 'toys.id'],
|
|
271
|
+
searchableColumns: ['name', 'toys.name'],
|
|
272
|
+
defaultLimit: 4,
|
|
273
|
+
};
|
|
274
|
+
const query = {
|
|
275
|
+
path: '',
|
|
276
|
+
};
|
|
277
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
278
|
+
expect(result.data.length).toStrictEqual(4);
|
|
279
|
+
});
|
|
246
280
|
it('should return correct links for some results', async () => {
|
|
247
281
|
const config = {
|
|
248
282
|
sortableColumns: ['id'],
|
|
@@ -1518,55 +1552,6 @@ describe('paginate', () => {
|
|
|
1518
1552
|
expect((0, filter_1.parseFilterToken)(string)).toStrictEqual(tokens);
|
|
1519
1553
|
});
|
|
1520
1554
|
}
|
|
1521
|
-
it('should return result based on virtualcolumn filter', async () => {
|
|
1522
|
-
const config = {
|
|
1523
|
-
sortableColumns: ['id'],
|
|
1524
|
-
filterableColumns: {
|
|
1525
|
-
'home.countCat': [filter_1.FilterOperator.GT],
|
|
1526
|
-
},
|
|
1527
|
-
relations: ['home'],
|
|
1528
|
-
};
|
|
1529
|
-
const query = {
|
|
1530
|
-
path: '',
|
|
1531
|
-
filter: {
|
|
1532
|
-
'home.countCat': '$gt:0',
|
|
1533
|
-
},
|
|
1534
|
-
sortBy: [['id', 'ASC']],
|
|
1535
|
-
};
|
|
1536
|
-
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
1537
|
-
const expectedResult = [0, 1].map((i) => {
|
|
1538
|
-
const ret = Object.assign((0, lodash_1.clone)(cats[i]), { home: Object.assign((0, lodash_1.clone)(catHomes[i])) });
|
|
1539
|
-
delete ret.home.cat;
|
|
1540
|
-
return ret;
|
|
1541
|
-
});
|
|
1542
|
-
expect(result.data).toStrictEqual(expectedResult);
|
|
1543
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&filter.home.countCat=$gt:0');
|
|
1544
|
-
});
|
|
1545
|
-
it('should return result sorted by a virtualcolumn', async () => {
|
|
1546
|
-
const config = {
|
|
1547
|
-
sortableColumns: ['home.countCat'],
|
|
1548
|
-
relations: ['home'],
|
|
1549
|
-
};
|
|
1550
|
-
const query = {
|
|
1551
|
-
path: '',
|
|
1552
|
-
sortBy: [['home.countCat', 'ASC']],
|
|
1553
|
-
};
|
|
1554
|
-
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
1555
|
-
const expectedResult = [2, 3, 4, 0, 1].map((i) => {
|
|
1556
|
-
const ret = (0, lodash_1.clone)(cats[i]);
|
|
1557
|
-
if (i == 0 || i == 1) {
|
|
1558
|
-
ret.home = (0, lodash_1.clone)(catHomes[i]);
|
|
1559
|
-
ret.home.countCat = cats.filter((cat) => cat.id === ret.home.cat.id).length;
|
|
1560
|
-
delete ret.home.cat;
|
|
1561
|
-
}
|
|
1562
|
-
else {
|
|
1563
|
-
ret.home = null;
|
|
1564
|
-
}
|
|
1565
|
-
return ret;
|
|
1566
|
-
});
|
|
1567
|
-
expect(result.data).toStrictEqual(expectedResult);
|
|
1568
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=home.countCat:ASC');
|
|
1569
|
-
});
|
|
1570
1555
|
it('should return result based on or between range filter', async () => {
|
|
1571
1556
|
const config = {
|
|
1572
1557
|
sortableColumns: ['id'],
|
|
@@ -1601,93 +1586,6 @@ describe('paginate', () => {
|
|
|
1601
1586
|
expect(result.data).toStrictEqual([...cats]);
|
|
1602
1587
|
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&filter.age=$null&filter.age=$or:$not:$eq:$null');
|
|
1603
1588
|
});
|
|
1604
|
-
it('should return result sorted and filter by a virtualcolumn in main entity', async () => {
|
|
1605
|
-
const config = {
|
|
1606
|
-
sortableColumns: ['countCat'],
|
|
1607
|
-
relations: ['cat'],
|
|
1608
|
-
filterableColumns: {
|
|
1609
|
-
countCat: [filter_1.FilterOperator.GT],
|
|
1610
|
-
},
|
|
1611
|
-
};
|
|
1612
|
-
const query = {
|
|
1613
|
-
path: '',
|
|
1614
|
-
filter: {
|
|
1615
|
-
countCat: '$gt:0',
|
|
1616
|
-
},
|
|
1617
|
-
sortBy: [['countCat', 'ASC']],
|
|
1618
|
-
};
|
|
1619
|
-
const result = await (0, paginate_1.paginate)(query, catHomeRepo, config);
|
|
1620
|
-
expect(result.data).toStrictEqual([catHomes[0], catHomes[1]]);
|
|
1621
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=countCat:ASC&filter.countCat=$gt:0');
|
|
1622
|
-
});
|
|
1623
|
-
it('should return result based on virtualcolumn filter', async () => {
|
|
1624
|
-
const config = {
|
|
1625
|
-
sortableColumns: ['id'],
|
|
1626
|
-
filterableColumns: {
|
|
1627
|
-
'home.countCat': [filter_1.FilterOperator.GT],
|
|
1628
|
-
},
|
|
1629
|
-
relations: ['home'],
|
|
1630
|
-
};
|
|
1631
|
-
const query = {
|
|
1632
|
-
path: '',
|
|
1633
|
-
filter: {
|
|
1634
|
-
'home.countCat': '$gt:0',
|
|
1635
|
-
},
|
|
1636
|
-
sortBy: [['id', 'ASC']],
|
|
1637
|
-
};
|
|
1638
|
-
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
1639
|
-
const expectedResult = [0, 1].map((i) => {
|
|
1640
|
-
const ret = Object.assign((0, lodash_1.clone)(cats[i]), { home: Object.assign((0, lodash_1.clone)(catHomes[i])) });
|
|
1641
|
-
delete ret.home.cat;
|
|
1642
|
-
return ret;
|
|
1643
|
-
});
|
|
1644
|
-
expect(result.data).toStrictEqual(expectedResult);
|
|
1645
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&filter.home.countCat=$gt:0');
|
|
1646
|
-
});
|
|
1647
|
-
it('should return result sorted by a virtualcolumn', async () => {
|
|
1648
|
-
const config = {
|
|
1649
|
-
sortableColumns: ['home.countCat'],
|
|
1650
|
-
relations: ['home'],
|
|
1651
|
-
};
|
|
1652
|
-
const query = {
|
|
1653
|
-
path: '',
|
|
1654
|
-
sortBy: [['home.countCat', 'ASC']],
|
|
1655
|
-
};
|
|
1656
|
-
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
1657
|
-
const expectedResult = [2, 3, 4, 0, 1].map((i) => {
|
|
1658
|
-
const ret = (0, lodash_1.clone)(cats[i]);
|
|
1659
|
-
if (i == 0 || i == 1) {
|
|
1660
|
-
ret.home = (0, lodash_1.clone)(catHomes[i]);
|
|
1661
|
-
ret.home.countCat = cats.filter((cat) => cat.id === ret.home.cat.id).length;
|
|
1662
|
-
delete ret.home.cat;
|
|
1663
|
-
}
|
|
1664
|
-
else {
|
|
1665
|
-
ret.home = null;
|
|
1666
|
-
}
|
|
1667
|
-
return ret;
|
|
1668
|
-
});
|
|
1669
|
-
expect(result.data).toStrictEqual(expectedResult);
|
|
1670
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=home.countCat:ASC');
|
|
1671
|
-
});
|
|
1672
|
-
it('should return result sorted and filter by a virtualcolumn in main entity', async () => {
|
|
1673
|
-
const config = {
|
|
1674
|
-
sortableColumns: ['countCat'],
|
|
1675
|
-
relations: ['cat'],
|
|
1676
|
-
filterableColumns: {
|
|
1677
|
-
countCat: [filter_1.FilterOperator.GT],
|
|
1678
|
-
},
|
|
1679
|
-
};
|
|
1680
|
-
const query = {
|
|
1681
|
-
path: '',
|
|
1682
|
-
filter: {
|
|
1683
|
-
countCat: '$gt:0',
|
|
1684
|
-
},
|
|
1685
|
-
sortBy: [['countCat', 'ASC']],
|
|
1686
|
-
};
|
|
1687
|
-
const result = await (0, paginate_1.paginate)(query, catHomeRepo, config);
|
|
1688
|
-
expect(result.data).toStrictEqual([catHomes[0], catHomes[1]]);
|
|
1689
|
-
expect(result.links.current).toBe('?page=1&limit=20&sortBy=countCat:ASC&filter.countCat=$gt:0');
|
|
1690
|
-
});
|
|
1691
1589
|
it("should return all columns if select doesn't contain all primary columns", async () => {
|
|
1692
1590
|
const config = {
|
|
1693
1591
|
sortableColumns: ['id', 'name'],
|
|
@@ -2156,5 +2054,145 @@ describe('paginate', () => {
|
|
|
2156
2054
|
}
|
|
2157
2055
|
});
|
|
2158
2056
|
});
|
|
2057
|
+
if (process.env.DB !== 'postgres') {
|
|
2058
|
+
describe('should return result based on virtual column', () => {
|
|
2059
|
+
it('should return result sorted and filter by a virtual column in main entity', async () => {
|
|
2060
|
+
const config = {
|
|
2061
|
+
sortableColumns: ['countCat'],
|
|
2062
|
+
relations: ['cat'],
|
|
2063
|
+
filterableColumns: {
|
|
2064
|
+
countCat: [filter_1.FilterOperator.GT],
|
|
2065
|
+
},
|
|
2066
|
+
};
|
|
2067
|
+
const query = {
|
|
2068
|
+
path: '',
|
|
2069
|
+
filter: {
|
|
2070
|
+
countCat: '$gt:0',
|
|
2071
|
+
},
|
|
2072
|
+
sortBy: [['countCat', 'ASC']],
|
|
2073
|
+
};
|
|
2074
|
+
const result = await (0, paginate_1.paginate)(query, catHomeRepo, config);
|
|
2075
|
+
expect(result.data).toStrictEqual([catHomes[0], catHomes[1]]);
|
|
2076
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=countCat:ASC&filter.countCat=$gt:0');
|
|
2077
|
+
});
|
|
2078
|
+
it('should return result based on virtual column filter', async () => {
|
|
2079
|
+
const config = {
|
|
2080
|
+
sortableColumns: ['id'],
|
|
2081
|
+
filterableColumns: {
|
|
2082
|
+
'home.countCat': [filter_1.FilterOperator.GT],
|
|
2083
|
+
},
|
|
2084
|
+
relations: ['home'],
|
|
2085
|
+
};
|
|
2086
|
+
const query = {
|
|
2087
|
+
path: '',
|
|
2088
|
+
filter: {
|
|
2089
|
+
'home.countCat': '$gt:0',
|
|
2090
|
+
},
|
|
2091
|
+
sortBy: [['id', 'ASC']],
|
|
2092
|
+
};
|
|
2093
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
2094
|
+
const expectedResult = [0, 1].map((i) => {
|
|
2095
|
+
const ret = Object.assign((0, lodash_1.clone)(cats[i]), { home: Object.assign((0, lodash_1.clone)(catHomes[i])) });
|
|
2096
|
+
delete ret.home.cat;
|
|
2097
|
+
return ret;
|
|
2098
|
+
});
|
|
2099
|
+
expect(result.data).toStrictEqual(expectedResult);
|
|
2100
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&filter.home.countCat=$gt:0');
|
|
2101
|
+
});
|
|
2102
|
+
it('should return result sorted by a virtual column', async () => {
|
|
2103
|
+
const config = {
|
|
2104
|
+
sortableColumns: ['home.countCat'],
|
|
2105
|
+
relations: ['home'],
|
|
2106
|
+
};
|
|
2107
|
+
const query = {
|
|
2108
|
+
path: '',
|
|
2109
|
+
sortBy: [['home.countCat', 'ASC']],
|
|
2110
|
+
};
|
|
2111
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
2112
|
+
const expectedResult = [2, 3, 4, 0, 1].map((i) => {
|
|
2113
|
+
const ret = (0, lodash_1.clone)(cats[i]);
|
|
2114
|
+
if (i == 0 || i == 1) {
|
|
2115
|
+
ret.home = (0, lodash_1.clone)(catHomes[i]);
|
|
2116
|
+
ret.home.countCat = cats.filter((cat) => cat.id === ret.home.cat.id).length;
|
|
2117
|
+
delete ret.home.cat;
|
|
2118
|
+
}
|
|
2119
|
+
else {
|
|
2120
|
+
ret.home = null;
|
|
2121
|
+
}
|
|
2122
|
+
return ret;
|
|
2123
|
+
});
|
|
2124
|
+
expect(result.data).toStrictEqual(expectedResult);
|
|
2125
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=home.countCat:ASC');
|
|
2126
|
+
});
|
|
2127
|
+
it('should return result sorted and filter by a virtual column in main entity', async () => {
|
|
2128
|
+
const config = {
|
|
2129
|
+
sortableColumns: ['countCat'],
|
|
2130
|
+
relations: ['cat'],
|
|
2131
|
+
filterableColumns: {
|
|
2132
|
+
countCat: [filter_1.FilterOperator.GT],
|
|
2133
|
+
},
|
|
2134
|
+
};
|
|
2135
|
+
const query = {
|
|
2136
|
+
path: '',
|
|
2137
|
+
filter: {
|
|
2138
|
+
countCat: '$gt:0',
|
|
2139
|
+
},
|
|
2140
|
+
sortBy: [['countCat', 'ASC']],
|
|
2141
|
+
};
|
|
2142
|
+
const result = await (0, paginate_1.paginate)(query, catHomeRepo, config);
|
|
2143
|
+
expect(result.data).toStrictEqual([catHomes[0], catHomes[1]]);
|
|
2144
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=countCat:ASC&filter.countCat=$gt:0');
|
|
2145
|
+
});
|
|
2146
|
+
it('should return result based on virtual column filter', async () => {
|
|
2147
|
+
const config = {
|
|
2148
|
+
sortableColumns: ['id'],
|
|
2149
|
+
filterableColumns: {
|
|
2150
|
+
'home.countCat': [filter_1.FilterOperator.GT],
|
|
2151
|
+
},
|
|
2152
|
+
relations: ['home'],
|
|
2153
|
+
};
|
|
2154
|
+
const query = {
|
|
2155
|
+
path: '',
|
|
2156
|
+
filter: {
|
|
2157
|
+
'home.countCat': '$gt:0',
|
|
2158
|
+
},
|
|
2159
|
+
sortBy: [['id', 'ASC']],
|
|
2160
|
+
};
|
|
2161
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
2162
|
+
const expectedResult = [0, 1].map((i) => {
|
|
2163
|
+
const ret = Object.assign((0, lodash_1.clone)(cats[i]), { home: Object.assign((0, lodash_1.clone)(catHomes[i])) });
|
|
2164
|
+
delete ret.home.cat;
|
|
2165
|
+
return ret;
|
|
2166
|
+
});
|
|
2167
|
+
expect(result.data).toStrictEqual(expectedResult);
|
|
2168
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=id:ASC&filter.home.countCat=$gt:0');
|
|
2169
|
+
});
|
|
2170
|
+
it('should return result sorted by a virtual column', async () => {
|
|
2171
|
+
const config = {
|
|
2172
|
+
sortableColumns: ['home.countCat'],
|
|
2173
|
+
relations: ['home'],
|
|
2174
|
+
};
|
|
2175
|
+
const query = {
|
|
2176
|
+
path: '',
|
|
2177
|
+
sortBy: [['home.countCat', 'ASC']],
|
|
2178
|
+
};
|
|
2179
|
+
const result = await (0, paginate_1.paginate)(query, catRepo, config);
|
|
2180
|
+
const expectedResult = [2, 3, 4, 0, 1].map((i) => {
|
|
2181
|
+
const ret = (0, lodash_1.clone)(cats[i]);
|
|
2182
|
+
if (i == 0 || i == 1) {
|
|
2183
|
+
ret.home = (0, lodash_1.clone)(catHomes[i]);
|
|
2184
|
+
ret.home.countCat = cats.filter((cat) => cat.id === ret.home.cat.id).length;
|
|
2185
|
+
delete ret.home.cat;
|
|
2186
|
+
}
|
|
2187
|
+
else {
|
|
2188
|
+
ret.home = null;
|
|
2189
|
+
}
|
|
2190
|
+
return ret;
|
|
2191
|
+
});
|
|
2192
|
+
expect(result.data).toStrictEqual(expectedResult);
|
|
2193
|
+
expect(result.links.current).toBe('?page=1&limit=20&sortBy=home.countCat:ASC');
|
|
2194
|
+
});
|
|
2195
|
+
});
|
|
2196
|
+
}
|
|
2159
2197
|
});
|
|
2160
2198
|
//# sourceMappingURL=paginate.spec.js.map
|