diff --git a/packages/server/src/api/controllers/search/utils.js b/packages/server/src/api/controllers/search/utils.js index d3ffb26be7..e8e26c813b 100644 --- a/packages/server/src/api/controllers/search/utils.js +++ b/packages/server/src/api/controllers/search/utils.js @@ -34,6 +34,7 @@ class QueryBuilder { fuzzy: {}, range: {}, equal: {}, + notEqual: {}, ...base, } this.limit = 50 @@ -73,6 +74,11 @@ class QueryBuilder { return this } + addNotEqual(key, value) { + this.query.notEqual[key] = value + return this + } + addTable(tableId) { this.query.equal.tableId = tableId return this @@ -85,7 +91,7 @@ class QueryBuilder { if (output.length !== 0) { output += " AND " } - output += queryFn(key, value) + output += queryFn(key, value).replace(/ /, "\\ ") } } @@ -104,6 +110,9 @@ class QueryBuilder { if (this.query.equal) { build(this.query.equal, (key, value) => `${key}:${value}`) } + if (this.query.notEqual) { + build(this.query.notEqual, (key, value) => `!${key}:${value}`) + } if (rawQuery) { output = output.length === 0 ? rawQuery : `&${rawQuery}` }