nralcm
Version:
This is a framework based on NodeJs to manage rest api request lifecycle
68 lines (67 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const common_1 = require("../common");
function Required(displayName, message) {
return function (target, key) {
const validatorData = {
propertyKey: key,
validator: "Required",
displayName: displayName,
message: message,
validate: RequiredValidate
};
const validatorDataArr = Reflect.getMetadata("validation", target) ?
Reflect.getMetadata("validation", target) : [];
validatorDataArr.push(validatorData);
// injection validation metadata in class object
Reflect.defineMetadata("validation", validatorDataArr, target);
};
}
exports.Required = Required;
/**
* Validates instance property for required
* @param value - value of class property
* @param validatorData meta data of property
* @param type instance of class
* @returns true or error message
*/
function RequiredValidate(value, validatorData, type) {
if (value.toString()) {
const typeOfValue = Reflect.getMetadata("design:type", type, validatorData.propertyKey);
if (!common_1.isValidType(typeOfValue, value)) {
const modelError = {
propertyName: validatorData.propertyKey,
errorMessage: `Parameter ${validatorData.propertyKey} is not valid value '${value} for type ${typeOfValue.name}'`,
isTypeError: true,
typeOfProperty: typeOfValue,
errorType: "RequestBody"
};
return modelError;
}
return true;
}
else {
if (validatorData.message) {
const modelError = {
propertyName: validatorData.propertyKey,
errorMessage: validatorData.message,
isTypeError: false,
typeOfProperty: Reflect.getMetadata("design:type", type, validatorData.propertyKey),
errorType: "RequestBody"
};
return modelError;
}
else {
const modelError = {
propertyName: validatorData.propertyKey,
errorMessage: `${validatorData.displayName || validatorData.propertyKey} is required`,
isTypeError: false,
typeOfProperty: Reflect.getMetadata("design:type", type, validatorData.propertyKey),
errorType: "RequestBody"
};
return modelError;
}
}
}
exports.RequiredValidate = RequiredValidate;