Archived
2

implementation of measurement fields

This commit is contained in:
VLE2FE
2020-06-30 14:16:37 +02:00
parent 52eb828bea
commit 8cf1c14d88
7 changed files with 145 additions and 26 deletions

View File

@ -71,10 +71,12 @@ export default class SampleValidate {
...SampleValidate.sortKeys,
'condition',
'material_id',
'material',
'note_id',
'user_id',
'material._id',
'material.numbers'
'material.numbers',
'measurements.*'
];
static input (data, param) { // validate input, set param to 'new' to make all attributes required
@ -114,7 +116,7 @@ export default class SampleValidate {
}
}
static output (data, param = 'refs+added') { // validate output and strip unwanted properties, returns null if not valid
static output (data, param = 'refs+added', additionalParams = []) { // validate output and strip unwanted properties, returns null if not valid
if (param === 'refs+added') {
param = 'refs';
data.added = data._id.getTimestamp();
@ -130,7 +132,7 @@ export default class SampleValidate {
batch: this.sample.batch,
condition: this.sample.condition,
material_id: IdValidate.get(),
material: MaterialValidate.outputV(),
material: MaterialValidate.outputV().append({number: Joi.string().max(128).allow('')}),
note_id: IdValidate.get().allow(null),
user_id: IdValidate.get(),
added: this.sample.added
@ -153,6 +155,9 @@ export default class SampleValidate {
else {
return null;
}
additionalParams.forEach(param => {
joiObject[param] = Joi.any();
});
const {value, error} = Joi.object(joiObject).validate(data, {stripUnknown: true});
return error !== undefined? null : value;
}
@ -165,7 +170,7 @@ export default class SampleValidate {
'page-size': Joi.number().integer().min(1),
sort: Joi.string().pattern(new RegExp('^(' + this.sortKeys.join('|').replace(/\./g, '\\.') + ')-(asc|desc)$', 'm')).default('_id-asc'),
csv: Joi.boolean().default(false),
fields: Joi.array().items(Joi.string().valid(...this.fieldKeys)).default(['_id','number','type','batch','material_id','color','condition','note_id','user_id','added'])
fields: Joi.array().items(Joi.string().pattern(new RegExp('^(' + this.fieldKeys.join('|').replace(/\./g, '\\.').replace(/\*/g, '.+') + ')$', 'm'))).default(['_id','number','type','batch','material_id','color','condition','note_id','user_id','added'])
}).with('to-page', 'page-size').validate(data);
}
}