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