implementation of measurement fields
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user