Fix special case filter by tag

This commit is contained in:
Zaid Abdulla committed 2018-12-26 00:22:07 -08:00
1 parent 722355ca57
commit f150d44485
1 file changed
+10
+10
View File
@@ -73,6 +73,16 @@ function limitFilter(resourceType, filter, last) {
} }
function findMatches(resourceType, filter, limit) { function findMatches(resourceType, filter, limit) {
// Handle "tag =" and "tag <>" special cases
if (resourceType === "devices" && filter.ast) {
const ast = filterParser.map(filter.ast, e => {
if (e[1] === "tag")
if (e[0] === "=") return ["=", `Tags.${e[2]}`, true];
else if (e[0] === "<>") return ["NOT", ["=", `Tags.${e[2]}`, true]];
});
filter = new Filter(ast);
}
let value = []; let value = [];
for (let [id, obj] of resources[resourceType].objects.entries()) for (let [id, obj] of resources[resourceType].objects.entries())
if (filter.test(obj)) value.push(id); if (filter.test(obj)) value.push(id);