Archived
2

first implementation of fields

This commit is contained in:
VLE2FE
2020-06-29 15:50:24 +02:00
parent e5cc661928
commit 52eb828bea
6 changed files with 98 additions and 25 deletions

View File

@ -51,6 +51,32 @@ export default class SampleValidate {
.min('1970-01-01T00:00:00.000Z')
};
private static sortKeys = [
'_id',
'color',
'number',
'type',
'batch',
'added',
'material.name',
'material.supplier',
'material.group',
'material.mineral',
'material.glass_fiber',
'material.carbon_fiber',
'material.number'
];
private static fieldKeys = [
...SampleValidate.sortKeys,
'condition',
'material_id',
'note_id',
'user_id',
'material._id',
'material.numbers'
];
static input (data, param) { // validate input, set param to 'new' to make all attributes required
if (param === 'new') {
return Joi.object({
@ -88,8 +114,11 @@ export default class SampleValidate {
}
}
static output (data, param = 'refs') { // validate output and strip unwanted properties, returns null if not valid
data.added = data._id.getTimestamp();
static output (data, param = 'refs+added') { // validate output and strip unwanted properties, returns null if not valid
if (param === 'refs+added') {
param = 'refs';
data.added = data._id.getTimestamp();
}
data = IdValidate.stringify(data);
let joiObject;
if (param === 'refs') {
@ -101,6 +130,7 @@ export default class SampleValidate {
batch: this.sample.batch,
condition: this.sample.condition,
material_id: IdValidate.get(),
material: MaterialValidate.outputV(),
note_id: IdValidate.get().allow(null),
user_id: IdValidate.get(),
added: this.sample.added
@ -133,8 +163,9 @@ export default class SampleValidate {
'from-id': IdValidate.get(),
'to-page': Joi.number().integer(),
'page-size': Joi.number().integer().min(1),
sort: Joi.string().pattern(/^(_id|color|number|type|batch|added|material\.name|material\.supplier|material\.group|material\.mineral|material\.glass_fiber|material\.carbon_fiber|material\.number)-(asc|desc)$/m).default('_id-asc'),
csv: Joi.boolean().default(false)
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'])
}).with('to-page', 'page-size').validate(data);
}
}