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
|
||||
|
||||
|
||||
class RegExp(str):
|
||||
pass
|
||||
|
||||
|
||||
def wildcard_filter(key, names):
|
||||
patterns = []
|
||||
for name in names:
|
||||
patterns.append('[^.]*'.join(re.escape(v) for v in name.split('*')))
|
||||
pattern = '|'.join(patterns)
|
||||
for pattern in names:
|
||||
if isinstance(pattern, RegExp):
|
||||
patterns.append(pattern)
|
||||
else:
|
||||
patterns.append('[^.]*'.join(re.escape(v) for v in pattern.split('*')))
|
||||
return f'|> filter(fn:(r) => r.{key} =~ /^({pattern})$/)'
|
||||
|
||||
|
||||
@ -236,7 +242,7 @@ class InfluxDBWrapper:
|
||||
columns[key] = crit
|
||||
continue
|
||||
if isinstance(crit, str):
|
||||
if '*' in crit:
|
||||
if isinstance(crit, RegExp) or '*' in crit:
|
||||
keynames.append(key)
|
||||
msg.append(wildcard_filter(key, [crit]))
|
||||
continue
|
||||
|
Reference in New Issue
Block a user