JacobPernell / songbird

Web-based MIDI piano roll editor for quick music sketches
1 stars 1 forks source link

Further generalize validation #101

Open mi4l opened 5 years ago

mi4l commented 5 years ago

gatherValidationErrors should be a single array.reduce rather than the current iteration. One solution may be creating a map per request type. For example:

USER_POST = [
    {
        field: 'email',
        validators: [
            {
                validator: acceptedCharactersValidator,
                comparator: EMAIL_REQUIREMENTS.REGEX
            },
            {
                validator: typeValidator,
                comparator: EMAIL_REQUIREMENTS.PRIMITIVE
            }
        ]
    },
    {
        field: 'password',
        validators: [
            {
                validator: acceptedCharactersValidator,
                comparator: PASSWORD_REQUIREMENTS.REGEX
            },
            {
                validator: typeValidator,
                comparator: PASSWORD_REQUIREMENTS.PRIMITIVE
            }
        ]
    },
    // ...
];

// handler
validateFields = requestMap => {
    return requestMap.reduce((errors, {
        field,
        validators: {
            validator,
            comparator
        }
    }) => {
        return !validator(field, comparator);
    }, []);
};