mirror of
https://github.com/kennethreitz-archive/redi.git
synced 2026-06-05 23:40:18 +00:00
start of auto type detection
This commit is contained in:
+24
-9
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user