diff options
Diffstat (limited to 'redis/commands/timeseries/utils.py')
| -rw-r--r-- | redis/commands/timeseries/utils.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/redis/commands/timeseries/utils.py b/redis/commands/timeseries/utils.py new file mode 100644 index 0000000..c33b7c5 --- /dev/null +++ b/redis/commands/timeseries/utils.py @@ -0,0 +1,49 @@ +from ..helpers import nativestr + + +def list_to_dict(aList): + return { + nativestr(aList[i][0]): nativestr(aList[i][1]) + for i in range(len(aList))} + + +def parse_range(response): + """Parse range response. Used by TS.RANGE and TS.REVRANGE.""" + return [tuple((r[0], float(r[1]))) for r in response] + + +def parse_m_range(response): + """Parse multi range response. Used by TS.MRANGE and TS.MREVRANGE.""" + res = [] + for item in response: + res.append( + {nativestr(item[0]): + [list_to_dict(item[1]), parse_range(item[2])]}) + return sorted(res, key=lambda d: list(d.keys())) + + +def parse_get(response): + """Parse get response. Used by TS.GET.""" + if not response: + return None + return int(response[0]), float(response[1]) + + +def parse_m_get(response): + """Parse multi get response. Used by TS.MGET.""" + res = [] + for item in response: + if not item[2]: + res.append( + {nativestr(item[0]): [list_to_dict(item[1]), None, None]}) + else: + res.append( + { + nativestr(item[0]): [ + list_to_dict(item[1]), + int(item[2][0]), + float(item[2][1]), + ] + } + ) + return sorted(res, key=lambda d: list(d.keys())) |
