json-api-nestjs
Version:
JsonApi Plugin for NestJs
43 lines • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSortObject = getSortObject;
exports.getQueryForCount = getQueryForCount;
const nestjs_shared_1 = require("../../../../utils/nestjs-shared");
function getSortObject(query) {
const { sort } = query;
const sortObject = {};
if (!sort)
return sortObject;
const { target = {}, ...relation } = sort;
for (const [filed, sortType] of nestjs_shared_1.ObjectTyped.entries(target)) {
sortObject[filed] = sortType;
}
for (const [relationName, orderConfig = {}] of nestjs_shared_1.ObjectTyped.entries(relation)) {
const name = relationName;
sortObject[name] = {};
for (const [field, sortType] of nestjs_shared_1.ObjectTyped.entries(orderConfig)) {
sortObject[name][field] = sortType;
}
}
return sortObject;
}
function getQueryForCount(query) {
const querySelect = this.microOrmUtilService.queryBuilder();
const sortObject = getSortObject(query);
querySelect.orderBy(Object.keys(sortObject).length > 0
? sortObject
: {
[this.microOrmUtilService.currentPrimaryColumn]: 'ASC',
});
const expressionArrayForTarget = this.microOrmUtilService.getFilterExpressionForTarget(query);
const expressionArrayForRelation = this.microOrmUtilService.getFilterExpressionForRelation(query);
const resultExpression = [
...expressionArrayForTarget,
...expressionArrayForRelation,
];
for (const expression of resultExpression) {
querySelect.andWhere(expression);
}
return querySelect;
}
//# sourceMappingURL=get-query-for-count.js.map