json-api-nestjs
Version:
JsonApi Plugin for NestJs
35 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.zodQuery = zodQuery;
const nestjs_shared_1 = require("../../../../utils/nestjs-shared");
const zod_1 = require("zod");
const fields_1 = require("./fields");
const filter_1 = require("./filter");
const sort_1 = require("./sort");
const include_1 = require("./include");
const zod_share_1 = require("../zod-share");
function getShape(entityFieldsStructure, entityRelationStructure, propsArray, propsType) {
return {
[nestjs_shared_1.QueryField.fields]: (0, fields_1.zodFieldsQuery)(entityFieldsStructure.field, entityRelationStructure),
[nestjs_shared_1.QueryField.filter]: (0, filter_1.zodFilterQuery)(entityFieldsStructure.field, entityRelationStructure, propsArray, propsType),
[nestjs_shared_1.QueryField.include]: (0, include_1.zodIncludeQuery)(entityFieldsStructure.relations),
[nestjs_shared_1.QueryField.sort]: (0, sort_1.zodSortQuery)(entityFieldsStructure.field, entityRelationStructure),
[nestjs_shared_1.QueryField.page]: (0, zod_share_1.zodPageInputQuery)(),
};
}
function getZodResultSchema(shape) {
return zod_1.z.object(shape).strict();
}
function zodQuery(entityFieldsStructure, entityRelationStructure, propsArray, propsType) {
const shape = getShape(entityFieldsStructure, entityRelationStructure, propsArray, propsType);
return getZodResultSchema(shape);
}
function zodQueryOne(entityFieldsStructure, entityRelationStructure, propsArray, propsType) {
return zod_1.z
.object({
[nestjs_shared_1.QueryField.fields]: (0, fields_1.zodFieldsQuery)(entityFieldsStructure.field, entityRelationStructure),
[nestjs_shared_1.QueryField.include]: (0, include_1.zodIncludeQuery)(entityFieldsStructure.relations),
})
.strict();
}
//# sourceMappingURL=index.js.map