1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 7x 7x 7x 16x 16x 16x 4x 2x 2x 1x 2x 12x 12x 12x 5x | export function rulesToQuery(rules, convert) { const query = {}; const ignoreOperators = {}; for (let i = 0; i < rules.length; i++) { const rule = rules[i]; const op = rule.inverted ? '$and' : '$or'; if (!rule.conditions) { if (rule.inverted) { return null; } if (query[op]) { delete query[op]; } ignoreOperators[op] = true; } else Eif (!ignoreOperators.hasOwnProperty(op)) { query[op] = query[op] || []; query[op].push(convert(rule)); } } return rules.length > 0 ? query : null; } |