diff --git a/redi/ext.py b/redi/ext.py index 818a62f..a571471 100644 --- a/redi/ext.py +++ b/redi/ext.py @@ -10,17 +10,15 @@ This module contains extra stuff. from . import config -from .utils import is_collection +from . import models +from .utils import is_collection, compress_key - -def expand_key(key): - """Expands tupled keys.""" - - if is_collection(key): - key = config.namespace_delimiter.join(key) - - return key +TYPE_MAP = { + 'value': models.RedisListString, + 'string': models.RedisListString, + 'list': models.RedisList +} def auto_type(key, redis=None, default=None): @@ -29,3 +27,20 @@ def auto_type(key, redis=None, default=None): if redis is None: redis = config.redis + key = compress_key(key) + + if redis.exists(key): + + datatype = redis.type(key) + + return TYPE_MAP.get(datatype)(key, redis=redis) + + else: + if default: + try: + return TYPE_MAP.get(default)(key, redis=redis) + except KeyError: + raise ValueError('Provide a valid default redis type.') + + return None +