UNPKG

json-api-nestjs

Version:
59 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QueryFiledInIncludePipe = void 0; const common_1 = require("@nestjs/common"); const nestjs_shared_1 = require("../../../../utils/nestjs-shared"); class QueryFiledInIncludePipe { transform(value) { const errors = []; const { fields, include, sort, filter } = value; const includeSet = new Set(); if (include) { include.reduce((acum, item) => acum.add(item), includeSet); } if (filter) { const { relation } = filter; if (relation) { const filterRelationFields = nestjs_shared_1.ObjectTyped.keys(relation); const filterFieldsErrors = filterRelationFields .filter((i) => !includeSet.has(i.toString())) .map((i) => ({ code: 'invalid_intersection_types', message: `Add '${i.toString()}' to query param 'include'`, path: ['filter', 'relation', i.toString()], })); errors.push(...filterFieldsErrors); } } if (fields) { const { target: targetResourceFields, ...relationFields } = fields; const selectRelationFields = nestjs_shared_1.ObjectTyped.keys(relationFields); const fieldsErrors = selectRelationFields .filter((i) => !includeSet.has(i.toString())) .map((i) => ({ code: 'invalid_intersection_types', message: `Add '${i.toString()}' to query param 'include'`, path: ['fields'], })); errors.push(...fieldsErrors); } if (sort) { const { target: targetResourceSorts, ...relationSorts } = sort; const selectRelationFields = nestjs_shared_1.ObjectTyped.keys(relationSorts); const fieldsErrors = selectRelationFields .filter((i) => !includeSet.has(i.toString())) .map((i) => ({ code: 'invalid_intersection_types', message: `Add '${i.toString()}' to query param 'include'`, path: ['sort'], })); errors.push(...fieldsErrors); } if (errors.length > 0) { throw new common_1.BadRequestException(errors); } return value; } } exports.QueryFiledInIncludePipe = QueryFiledInIncludePipe; //# sourceMappingURL=query-filed-in-include.pipe.js.map