import Joi from 'joi' function joiFromCustom (custom) { const output = {} custom.forEach(field => { if (field.kind === 'text' || field.kind === 'link') { output[field.key] = Joi.string().allow('') } }) return output } function createEventSchema (custom) { return Joi.object().keys({ id: Joi.string().allow(''), description: Joi.string().allow('').required(), date: Joi.string().allow(''), time: Joi.string().allow(''), time_precision: Joi.string().allow(''), location: Joi.string().allow(''), latitude: Joi.string().allow(''), longitude: Joi.string().allow(''), type: Joi.string().allow(''), category: Joi.string().allow(''), category_full: Joi.string().allow(''), associations: Joi.array().required().default([]), sources: Joi.array(), comments: Joi.string().allow(''), time_display: Joi.string().allow(''), // nested narrative___stepStyles: Joi.array(), shape: Joi.string().allow(''), colour: Joi.string().allow(''), ...joiFromCustom(custom) }) .and('latitude', 'longitude') .or('date', 'latitude') } export default createEventSchema