33 lines
936 B
JavaScript
33 lines
936 B
JavaScript
class Utils {
|
|
static makeVehiclesSearchQuery(queryParams) {
|
|
const { query, brand, model, color, regions } = queryParams;
|
|
|
|
let numberQuery = Utils.makeNumberQuery(query, regions?.split(',') ?? []);
|
|
let findQuery = {
|
|
'brand.name.normalized': brand,
|
|
'model.name.normalized': model,
|
|
color
|
|
};
|
|
|
|
let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val ));
|
|
return { ...findQueryFiltered, ...numberQuery };
|
|
}
|
|
|
|
static makeNumberQuery(number, regions) {
|
|
let regionsQuery = null;
|
|
if(regions.length > 0) {
|
|
regionsQuery = { $or: regions.map(r => { return { number: { $regex: `\\D${r}$` } }; }) };
|
|
}
|
|
if(number && regionsQuery) {
|
|
return { $and: [ { number: { $regex: number } }, regionsQuery ] };
|
|
} else if(number) {
|
|
return { number: { $regex: number } };
|
|
} else if(regionsQuery) {
|
|
return regionsQuery;
|
|
} else {
|
|
return {};
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = Utils; |