mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-11-09 12:43:11 +00:00
31 lines
827 B
Python
31 lines
827 B
Python
|
from datetime import datetime
|
||
|
from typing import Optional
|
||
|
|
||
|
|
||
|
def store_model_as_hash(redis, redis_key, model):
|
||
|
for key, value in model.dict().items():
|
||
|
if isinstance(value, datetime):
|
||
|
value = value.isoformat()
|
||
|
redis.hset(redis_key, key, str(value))
|
||
|
|
||
|
|
||
|
def hash_as_model(redis, redis_key: str, model_class):
|
||
|
token_dict = _model_dict_from_hash(redis, redis_key)
|
||
|
if token_dict is not None:
|
||
|
return model_class(**token_dict)
|
||
|
return None
|
||
|
|
||
|
|
||
|
def _prepare_model_dict(d: dict):
|
||
|
for key in d.keys():
|
||
|
if d[key] == "None":
|
||
|
d[key] = None
|
||
|
|
||
|
|
||
|
def _model_dict_from_hash(redis, redis_key: str) -> Optional[dict]:
|
||
|
if redis.exists(redis_key):
|
||
|
token_dict = redis.hgetall(redis_key)
|
||
|
_prepare_model_dict(token_dict)
|
||
|
return token_dict
|
||
|
return None
|