mirror of
https://github.com/strapi/strapi.git
synced 2025-07-27 10:56:36 +00:00
Add some default validators for numbers and string
Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
This commit is contained in:
parent
edae06b898
commit
c7594f5743
@ -28,8 +28,17 @@
|
|||||||
"component": "default.closingperiod",
|
"component": "default.closingperiod",
|
||||||
"type": "component"
|
"type": "component"
|
||||||
},
|
},
|
||||||
|
"contact_email": {
|
||||||
|
"type": "email"
|
||||||
|
},
|
||||||
|
"stars": {
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"min": 0,
|
||||||
|
"max": 3
|
||||||
|
},
|
||||||
"address": {
|
"address": {
|
||||||
|
"required": true,
|
||||||
"model": "address"
|
"model": "address"
|
||||||
},
|
},
|
||||||
"cover": {
|
"cover": {
|
||||||
@ -55,7 +64,8 @@
|
|||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"type": "richtext",
|
"type": "richtext",
|
||||||
"required": true
|
"required": true,
|
||||||
|
"minLength": 10
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"component": "default.restaurantservice",
|
"component": "default.restaurantservice",
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
const yup = require('yup');
|
const yup = require('yup');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
yup.addMethod(yup.mixed, 'defined', function(msg = '${path} must be defined') {
|
function isDefined(msg = '${path} must be defined') {
|
||||||
return this.test('defined', msg, value => !_.isNil(value));
|
return this.test('defined', msg, value => !_.isNil(value));
|
||||||
});
|
}
|
||||||
|
|
||||||
|
yup.addMethod(yup.mixed, 'defined', isDefined);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a formatted error for http responses
|
* Returns a formatted error for http responses
|
||||||
|
@ -28,6 +28,57 @@ const stringValidator = composeValidators(
|
|||||||
addMaxLengthValidator
|
addMaxLengthValidator
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const enumerationValidator = attr => {
|
||||||
|
return yup
|
||||||
|
.string()
|
||||||
|
.nullable()
|
||||||
|
.oneOf(Array.isArray(attr.enum) ? attr.enum : [attr.enum]);
|
||||||
|
};
|
||||||
|
|
||||||
|
const emailValidator = composeValidators(stringValidator, (attr, validator) =>
|
||||||
|
validator.email()
|
||||||
|
);
|
||||||
|
|
||||||
|
const minIntegerValidator = ({ min }, validator) =>
|
||||||
|
_.isNumber(min) ? validator.min(_.toInteger(min)) : validator;
|
||||||
|
|
||||||
|
const maxIntegerValidator = ({ max }, validator) =>
|
||||||
|
_.isNumber(max) ? validator.max(_.toInteger(max)) : validator;
|
||||||
|
|
||||||
|
const integerValidator = composeValidators(
|
||||||
|
() => yup.number().integer(),
|
||||||
|
minIntegerValidator,
|
||||||
|
maxIntegerValidator
|
||||||
|
);
|
||||||
|
|
||||||
|
const minFloatValidator = ({ min }, validator) =>
|
||||||
|
_.isNumber(min) ? validator.min(min) : validator;
|
||||||
|
|
||||||
|
const maxFloatValidator = ({ max }, validator) =>
|
||||||
|
_.isNumber(max) ? validator.max(max) : validator;
|
||||||
|
|
||||||
|
const floatValidator = composeValidators(
|
||||||
|
() => yup.number(),
|
||||||
|
minFloatValidator,
|
||||||
|
maxFloatValidator
|
||||||
|
);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
string: stringValidator,
|
string: stringValidator,
|
||||||
|
text: stringValidator,
|
||||||
|
richtext: stringValidator,
|
||||||
|
password: stringValidator,
|
||||||
|
email: emailValidator,
|
||||||
|
enumeration: enumerationValidator,
|
||||||
|
boolean: () => yup.boolean(),
|
||||||
|
uid: () => yup.mixed(),
|
||||||
|
json: () => yup.mixed(),
|
||||||
|
integer: integerValidator,
|
||||||
|
biginteger: () => yup.mixed(),
|
||||||
|
float: floatValidator,
|
||||||
|
decimal: floatValidator,
|
||||||
|
date: () => yup.mixed(),
|
||||||
|
time: () => yup.mixed(),
|
||||||
|
datetime: () => yup.mixed(),
|
||||||
|
timestamp: () => yup.mixed(),
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user