allow regexp patterns in query
This commit is contained in:
14
influx.py
14
influx.py
@ -43,11 +43,17 @@ def negnull2none(v):
|
|||||||
return None if v == 0 and copysign(1, v) == -1 else v
|
return None if v == 0 and copysign(1, v) == -1 else v
|
||||||
|
|
||||||
|
|
||||||
|
class RegExp(str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def wildcard_filter(key, names):
|
def wildcard_filter(key, names):
|
||||||
patterns = []
|
patterns = []
|
||||||
for name in names:
|
for pattern in names:
|
||||||
patterns.append('[^.]*'.join(re.escape(v) for v in name.split('*')))
|
if isinstance(pattern, RegExp):
|
||||||
pattern = '|'.join(patterns)
|
patterns.append(pattern)
|
||||||
|
else:
|
||||||
|
patterns.append('[^.]*'.join(re.escape(v) for v in pattern.split('*')))
|
||||||
return f'|> filter(fn:(r) => r.{key} =~ /^({pattern})$/)'
|
return f'|> filter(fn:(r) => r.{key} =~ /^({pattern})$/)'
|
||||||
|
|
||||||
|
|
||||||
@ -236,7 +242,7 @@ class InfluxDBWrapper:
|
|||||||
columns[key] = crit
|
columns[key] = crit
|
||||||
continue
|
continue
|
||||||
if isinstance(crit, str):
|
if isinstance(crit, str):
|
||||||
if '*' in crit:
|
if isinstance(crit, RegExp) or '*' in crit:
|
||||||
keynames.append(key)
|
keynames.append(key)
|
||||||
msg.append(wildcard_filter(key, [crit]))
|
msg.append(wildcard_filter(key, [crit]))
|
||||||
continue
|
continue
|
||||||
|
Reference in New Issue
Block a user