UNPKG

json-api-nestjs

Version:
61 lines 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAll = getAll; const core_1 = require("@mikro-orm/core"); const get_query_for_count_1 = require("./get-query-for-count"); async function getAll(query) { const { page } = query; const countSubQuery = get_query_for_count_1.getQueryForCount.call(this, ...[query]); const skip = (page.number - 1) * page.size; const paginationQuery = countSubQuery .clone() .select(this.microOrmUtilService.currentPrimaryColumn) .limit(page.size, skip); const collectIdsAlias = 'CollectIds'; const queryIdsQuery = this.microOrmUtilService .queryBuilder(collectIdsAlias) .select(this.microOrmUtilService.currentPrimaryColumn) .join(paginationQuery, this.microOrmUtilService.currentAlias, { [`${collectIdsAlias}.${this.microOrmUtilService.currentPrimaryColumn}`]: this.microOrmUtilService .getKnex() .ref(`${this.microOrmUtilService.currentAlias}.${this.microOrmUtilService.currentPrimaryColumn}`), }); const queryCount = this.microOrmUtilService .queryBuilder() .from(countSubQuery .clone() .select(this.microOrmUtilService.currentPrimaryColumn)) .count(this.microOrmUtilService.currentPrimaryColumn, true); const resCount = await queryCount.execute('get'); const count = resCount ? +resCount.count : 0; if (count === 0) { return { totalItems: count, items: [], }; } const resIds = await queryIdsQuery .distinct() .setFlag(core_1.QueryFlag.DISABLE_PAGINATE) .execute('all'); const idsArray = resIds.map((r) => r[this.microOrmUtilService.currentPrimaryColumn]); const resultQueryBuilder = this.microOrmUtilService.queryBuilder().where({ [this.microOrmUtilService.currentPrimaryColumn]: { $in: idsArray, }, }); const sortObject = (0, get_query_for_count_1.getSortObject)(query); const resultList = await this.microOrmUtilService .prePareQueryBuilder(resultQueryBuilder, query) .orderBy(Object.keys(sortObject).length > 0 ? sortObject : { [this.microOrmUtilService.currentPrimaryColumn]: 'ASC', }) .getResult(); return { totalItems: count, items: resultList.map((i) => (0, core_1.wrap)(i).toJSON()), }; } //# sourceMappingURL=get-all.js.map