summaryrefslogtreecommitdiff
path: root/redis/commands/timeseries/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'redis/commands/timeseries/utils.py')
-rw-r--r--redis/commands/timeseries/utils.py49
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()))