UNPKG

nralcm

Version:

This is a framework based on NodeJs to manage rest api request lifecycle

68 lines (67 loc) 2.58 kB
"use strict"; 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;