Archived
2

added filters

This commit is contained in:
VLE2FE
2020-07-06 09:43:04 +02:00
parent e4bc5a77f1
commit 29eefce0c9
6 changed files with 176 additions and 17 deletions

View File

@ -164,6 +164,18 @@ export default class SampleValidate {
}
static query (data) {
if (data.filters && data.filters.length) {
const filterValidation = Joi.array().items(Joi.string()).validate(data.filters);
if (filterValidation.error) return filterValidation;
try {
for (let i in data.filters) {
data.filters[i] = JSON.parse(data.filters[i]);
}
}
catch {
return {error: {details: [{message: 'Invalid JSON string for filter parameter'}]}, value: null}
}
}
return Joi.object({
status: Joi.string().valid('validated', 'new', 'all'),
'from-id': IdValidate.get(),
@ -171,7 +183,12 @@ export default class SampleValidate {
'page-size': Joi.number().integer().min(1),
sort: Joi.string().pattern(new RegExp('^(' + this.sortKeys.join('|').replace(/\./g, '\\.').replace(/\*/g, '.+') + ')-(asc|desc)$', 'm')).default('_id-asc'),
csv: Joi.boolean().default(false),
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'])
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']),
filters: Joi.array().items(Joi.object({
mode: Joi.string().valid('eq', 'ne', 'lt', 'lte', 'gt', 'gte', 'in', 'nin'),
field: Joi.string().pattern(new RegExp('^(' + this.fieldKeys.join('|').replace(/\./g, '\\.').replace(/\*/g, '.+') + ')$', 'm')),
values: Joi.array().items(Joi.alternatives().try(Joi.string().max(128), Joi.number(), Joi.boolean())).min(1)
})).default([])
}).with('to-page', 'page-size').validate(data);
}
}