import Joi from '@hapi/joi'; import IdValidate from './id'; export default class MeasurementValidate { private static measurement = { values: Joi.object() .pattern(/.*/, Joi.alternatives() .try( Joi.string().max(128), Joi.number(), Joi.boolean(), Joi.array() ) ) }; static input (data, param) { // validate input, set param to 'new' to make all attributes required if (param === 'new') { return Joi.object({ condition_id: IdValidate.get().required(), values: this.measurement.values.required(), measurement_template: IdValidate.get().required() }).validate(data); } else if (param === 'change') { return Joi.object({ values: this.measurement.values }).validate(data); } else { return{error: 'No parameter specified!', value: {}}; } } static output (data) { // validate output and strip unwanted properties, returns null if not valid data = IdValidate.stringify(data); const {value, error} = Joi.object({ _id: IdValidate.get(), condition_id: IdValidate.get(), values: this.measurement.values, measurement_template: IdValidate.get() }).validate(data, {stripUnknown: true}); return error !== undefined? null : value; } }