feat: 🎸 Add active session filter (#2052)
* feat: 🎸 Add active session filter * fix: 🐛 Fix tests and verify client daemon calls are correct ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-11803
This commit is contained in:
1 parent
c06d18940d
commit
47cf7995d3
9 files changed
+240
-111
No files matched your search
@@ -22,38 +22,45 @@ export function generateMQLFilterExpression(filterObj) {
|
||||
|
||||
const expressions = Object.entries(filterObj)
|
||||
.map(([key, filterObjValue]) => {
|
||||
const filterObjValueArray = Array.isArray(filterObjValue)
|
||||
const filterValueArray = Array.isArray(filterObjValue)
|
||||
? filterObjValue
|
||||
: [filterObjValue];
|
||||
: filterObjValue.values;
|
||||
|
||||
const orClauses = or(
|
||||
filterObjValueArray.map((filterObjValue) => {
|
||||
if (!filterObjValue) {
|
||||
return null;
|
||||
}
|
||||
let clauses;
|
||||
const filterValues = filterValueArray.map((filterObjValue) => {
|
||||
if (!filterObjValue) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const [operation, value] = Object.entries(filterObjValue)[0];
|
||||
const [operation, value] = Object.entries(filterObjValue)[0];
|
||||
|
||||
switch (operation) {
|
||||
case 'contains':
|
||||
return contains(key, value);
|
||||
case 'gt':
|
||||
return gt(key, value);
|
||||
case 'gte':
|
||||
return gte(key, value);
|
||||
case 'lt':
|
||||
return lt(key, value);
|
||||
case 'lte':
|
||||
return lte(key, value);
|
||||
case 'notEquals':
|
||||
return notEquals(key, value);
|
||||
default:
|
||||
return equals(key, value);
|
||||
}
|
||||
}),
|
||||
);
|
||||
switch (operation) {
|
||||
case 'contains':
|
||||
return contains(key, value);
|
||||
case 'gt':
|
||||
return gt(key, value);
|
||||
case 'gte':
|
||||
return gte(key, value);
|
||||
case 'lt':
|
||||
return lt(key, value);
|
||||
case 'lte':
|
||||
return lte(key, value);
|
||||
case 'notEquals':
|
||||
return notEquals(key, value);
|
||||
default:
|
||||
return equals(key, value);
|
||||
}
|
||||
});
|
||||
|
||||
return parenthetical(orClauses);
|
||||
// Default to `or` if we don't have a logical operator
|
||||
const { logicalOperator } = filterObjValue;
|
||||
if (logicalOperator === 'and') {
|
||||
clauses = and(filterValues);
|
||||
} else {
|
||||
clauses = or(filterValues);
|
||||
}
|
||||
|
||||
return parenthetical(clauses);
|
||||
})
|
||||
.filter((item) => item);
|
||||
return and(expressions);
|
||||
|
||||
Reference in new issue
Block a user