@joktec/mongo
Version:
JokTec - Mongo Service
31 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArrayProps = ArrayProps;
const utils_1 = require("@joktec/utils");
const lodash_1 = require("lodash");
function ArrayProps(opts, swagger) {
const decorators = [];
const isArrayType = (0, utils_1.toInt)(opts?.dim, 1) > 1;
decorators.push((0, utils_1.IsArray)({ each: isArrayType }));
if (!(0, lodash_1.isNil)(opts.minSize)) {
const minSize = (0, lodash_1.isArray)(opts.minSize) ? opts.minSize : [opts.minSize, undefined];
const validatorOption = { each: isArrayType };
if (minSize[1])
validatorOption.message = minSize[1];
decorators.push((0, utils_1.ArrayMinSize)(minSize[0], validatorOption));
swagger.minItems = minSize[0];
}
if (!(0, lodash_1.isNil)(opts.maxSize)) {
const maxSize = (0, lodash_1.isArray)(opts.maxSize) ? opts.maxSize : [opts.maxSize, undefined];
const validatorOption = { each: isArrayType };
if (maxSize[1])
validatorOption.message = maxSize[1];
decorators.push((0, utils_1.ArrayMaxSize)(maxSize[0], validatorOption));
swagger.maxItems = maxSize[0];
}
if (opts.uniqItems) {
decorators.push((0, utils_1.Transform)(({ value }) => (!value ? [] : (0, lodash_1.uniq)((0, utils_1.toArray)(value)))));
}
return decorators;
}
//# sourceMappingURL=array.prop.js.map