talyssonoc/structure

View on GitHub
packages/structure/src/validation/forAttribute.js

Summary

Maintainability
A
0 mins
Test Coverage
const validations = [
  require('./validations/string'),
  require('./validations/number'),
  require('./validations/boolean'),
  require('./validations/date'),
];

const NestedValidation = require('./validations/nested');
const arrayValidation = require('./validations/array');

module.exports = function validationForAttribute(attributeDefinition) {
  if (attributeDefinition.isArrayType) {
    return arrayValidation(attributeDefinition);
  }

  const validation = validations.find((v) => v.type === attributeDefinition.options.type);

  if (!validation) {
    return NestedValidation.forType(attributeDefinition);
  }

  return validation.createJoiSchema(attributeDefinition);
};