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:
Zhihe Li committed 2024-01-16 10:17:46 -05:00
1 parent c06d18940d
commit 47cf7995d3
9 files changed
+240 -111

No files matched your search

+34 -27
View File
@@ -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);