@vasrefil/api-toolkit 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -34,14 +34,28 @@ class QueryHelper_ {
|
|
|
34
34
|
console.log(error);
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
this.get_search = (query) => {
|
|
38
|
+
const { search } = query;
|
|
39
|
+
let searchx = search ? this.str_to_obj(search) : {};
|
|
40
|
+
let result = {};
|
|
41
|
+
if (searchx.key && searchx.value) {
|
|
42
|
+
const keys = searchx.key.split(',');
|
|
43
|
+
const filters = [];
|
|
44
|
+
for (let key of keys) {
|
|
45
|
+
key = key.trim();
|
|
46
|
+
filters.push({ [key]: { $regex: new RegExp(`${searchx.value}`, 'i') } });
|
|
47
|
+
}
|
|
48
|
+
result = { '$or': filters };
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
37
52
|
}
|
|
38
53
|
build_query(query) {
|
|
39
54
|
if (!query)
|
|
40
55
|
query = {};
|
|
41
|
-
const { filter, limit, page, filterRange, date_range, date_type
|
|
56
|
+
const { filter, limit, page, filterRange, date_range, date_type } = query;
|
|
42
57
|
let range = filterRange ? this.str_to_obj(filterRange) : null;
|
|
43
58
|
const filterx = filter ? this.str_to_obj(filter) : {};
|
|
44
|
-
let searchx = search ? this.str_to_obj(search) : {};
|
|
45
59
|
const date_rangex = date_range ? this.str_to_obj(date_range) : {};
|
|
46
60
|
const pagex = page ? Number(page) : 1;
|
|
47
61
|
const skipx = page ? ((Number(page) - 1) * limit) : 0;
|
|
@@ -50,13 +64,12 @@ class QueryHelper_ {
|
|
|
50
64
|
const { field, ranges: { from, to } } = range;
|
|
51
65
|
range = { [field]: { $gte: from, $lt: to } };
|
|
52
66
|
}
|
|
53
|
-
|
|
67
|
+
const search = this.get_search(query);
|
|
54
68
|
const filterResult = range || filterx || {};
|
|
55
69
|
const date_range_ = this.get_date_range({ date_type, date_range: date_rangex });
|
|
56
|
-
const search_ = searchx ? { [searchx.key]: { $regex: new RegExp(`${searchx.value}`, 'i') } } : {};
|
|
57
70
|
const filters = this.process_filters(query);
|
|
58
71
|
const sort = this.get_sort(query);
|
|
59
|
-
const filter_result = { ...filterResult, ...date_range_, ...
|
|
72
|
+
const filter_result = { ...filterResult, ...date_range_, ...search, ...filters };
|
|
60
73
|
return { sort, limit: limitx, filter: filter_result, skip: skipx, page: pagex };
|
|
61
74
|
}
|
|
62
75
|
get_date_range(payload) {
|