json-api-nestjs
Version:
JsonApi Plugin for NestJs
38 lines • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.zodSortQuery = zodSortQuery;
const nestjs_shared_1 = require("../../../../utils/nestjs-shared");
const zod_1 = require("zod");
const constants_1 = require("../../../../constants");
const zod_utils_1 = require("../zod-utils");
function getZodSortRule() {
return zod_1.z.enum(constants_1.SORT_TYPE).optional();
}
function getZodFieldRule(fields) {
const targetShape = fields.reduce((acum, item) => ({
...acum,
[item]: getZodSortRule(),
}), {});
return zod_1.z.object(targetShape).strict().refine((0, zod_utils_1.nonEmptyObject)()).optional();
}
function zodSortQuery(fields, relationList) {
const zodRelationShape = {};
const zodTargetShape = {
target: getZodFieldRule(fields),
};
for (const [key, val] of nestjs_shared_1.ObjectTyped.entries(relationList)) {
if (key === 'target')
continue;
zodRelationShape[key] = getZodFieldRule(val);
}
return zod_1.z
.object({
...zodTargetShape,
...zodRelationShape,
})
.strict()
.partial()
.refine((0, zod_utils_1.nonEmptyObject)())
.nullable();
}
//# sourceMappingURL=sort.js.map