1 | const sift = require('sift').default;
|
2 |
|
3 | function preprocessQueryObj(queryObj) {
|
4 | if (typeof queryObj === 'object' && queryObj) {
|
5 | if (queryObj.constructor === Object) {
|
6 | const result = {};
|
7 | for (const key of Object.keys(queryObj)) {
|
8 | result[key] = preprocessQueryObj(queryObj[key]);
|
9 | }
|
10 | return result;
|
11 | } else {
|
12 | if (queryObj.id) {
|
13 |
|
14 | return { id: queryObj.id };
|
15 | } else {
|
16 |
|
17 | return queryObj;
|
18 | }
|
19 | }
|
20 | } else if (Array.isArray(queryObj)) {
|
21 | return queryObj.map(preprocessQueryObj);
|
22 | } else {
|
23 |
|
24 | return queryObj;
|
25 | }
|
26 | }
|
27 |
|
28 | module.exports = function compileQuery(queryObj = {}) {
|
29 | return sift(preprocessQueryObj(queryObj));
|
30 | };
|