added required parameter range
This commit is contained in:
@ -5,43 +5,35 @@ export default class ParametersValidate {
|
||||
static input (data, parameters, param) {
|
||||
let joiObject = {};
|
||||
parameters.forEach(parameter => {
|
||||
if (parameter.range.hasOwnProperty('values')) { // append right validation method according to parameter
|
||||
joiObject[parameter.name] = Joi.alternatives()
|
||||
.try(Joi.string().max(128), Joi.number(), Joi.boolean())
|
||||
.valid(...parameter.range.values);
|
||||
}
|
||||
else if (parameter.range.hasOwnProperty('min') && parameter.range.hasOwnProperty('max')) {
|
||||
|
||||
joiObject[parameter.name] = Joi.number()
|
||||
.min(parameter.range.min)
|
||||
.max(parameter.range.max);
|
||||
}
|
||||
else if (parameter.range.hasOwnProperty('min')) {
|
||||
joiObject[parameter.name] = Joi.number()
|
||||
.min(parameter.range.min);
|
||||
}
|
||||
else if (parameter.range.hasOwnProperty('max')) {
|
||||
joiObject[parameter.name] = Joi.number()
|
||||
.max(parameter.range.max);
|
||||
}
|
||||
else if (parameter.range.hasOwnProperty('type')) {
|
||||
switch (parameter.range.type) {
|
||||
case 'array':
|
||||
joiObject[parameter.name] = Joi.array();
|
||||
break;
|
||||
default:
|
||||
switch (parameter.range.type) {
|
||||
case 'number': joiObject[parameter.name] = Joi.number();
|
||||
break;
|
||||
case 'boolean': joiObject[parameter.name] = Joi.boolean();
|
||||
break;
|
||||
case 'array': joiObject[parameter.name] = Joi.array();
|
||||
break;
|
||||
case 'string': joiObject[parameter.name] = Joi.string().max(128);
|
||||
break; // min or max implicitly define the value to be a number
|
||||
default: if (parameter.range.hasOwnProperty('min') || parameter.range.hasOwnProperty('max')) {
|
||||
joiObject[parameter.name] = Joi.number();
|
||||
}
|
||||
else {
|
||||
joiObject[parameter.name] = Joi.string().max(128);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
joiObject[parameter.name] = Joi.alternatives()
|
||||
.try(Joi.string().max(128), Joi.number(), Joi.boolean());
|
||||
if (parameter.range.hasOwnProperty('min')) {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].min(parameter.range.min)
|
||||
}
|
||||
if (param === 'new') {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].required()
|
||||
if (parameter.range.hasOwnProperty('max')) {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].max(parameter.range.max)
|
||||
}
|
||||
else if (param === 'null') {
|
||||
if (parameter.range.hasOwnProperty('values')) {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].valid(...parameter.range.values);
|
||||
}
|
||||
if (parameter.range.hasOwnProperty('required') && parameter.range.required) {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].required();
|
||||
}
|
||||
if (param === 'null') {
|
||||
joiObject[parameter.name] = joiObject[parameter.name].allow(null)
|
||||
}
|
||||
});
|
||||
|
@ -28,13 +28,12 @@ export default class TemplateValidate {
|
||||
max: Joi.number(),
|
||||
|
||||
type: Joi.string()
|
||||
.valid('array')
|
||||
.valid('string', 'number', 'boolean', 'array'),
|
||||
|
||||
required: Joi.boolean()
|
||||
})
|
||||
.oxor('values', 'min')
|
||||
.oxor('values', 'max')
|
||||
.oxor('type', 'values')
|
||||
.oxor('type', 'min')
|
||||
.oxor('type', 'max')
|
||||
.required()
|
||||
})
|
||||
)
|
||||
|
Reference in New Issue
Block a user