UNPKG

json-api-nestjs

Version:
38 lines 1.25 kB
"use strict"; 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