Skip to content

Commit

Permalink
Merge pull request #38 from nmckoy/js-filter
Browse files Browse the repository at this point in the history
support javascript filter
  • Loading branch information
xvrl committed Jan 21, 2016
2 parents 70fc6f6 + 10a8340 commit cc15aab
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
12 changes: 12 additions & 0 deletions pydruid/utils/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ def __init__(self, **args):
"dimension": args["dimension"],
"value": args["value"]}}

elif args["type"] == "javascript":
self.filter = {"filter": {"type": "javascript",
"dimension": args["dimension"],
"function": args["function"]}}

elif args["type"] == "and":
self.filter = {"filter": {"type": "and",
"fields": args["fields"]}}
Expand Down Expand Up @@ -67,3 +72,10 @@ def __init__(self, dim):

def __eq__(self, other):
return Filter(dimension=self.dimension, value=other)

class JavaScript:
def __init__(self, dim):
self.dimension = dim

def __eq__(self, func):
return Filter(type='javascript', dimension=self.dimension, function=func)
6 changes: 6 additions & 0 deletions tests/utils/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ def test_selector_filter(self):
expected = {'type': 'selector', 'dimension': 'dim', 'value': 'val'}
assert actual == expected

def test_javascript_filter(self):
actual = filters.Filter.build_filter(
filters.Filter(type='javascript', dimension='dim', function='function(x){return true}'))
expected = {'type': 'javascript', 'dimension': 'dim', 'function': 'function(x){return true}'}
assert actual == expected

def test_and_filter(self):
f1 = filters.Filter(dimension='dim1', value='val1')
f2 = filters.Filter(dimension='dim2', value='val2')
Expand Down

0 comments on commit cc15aab

Please sign in to comment.