Refine connection strings (dotenv), Makefile targets

This commit is contained in:
Andrew Brookins 2021-10-20 14:29:31 -07:00
parent d2fa4c586f
commit 49654eeede
7 changed files with 49 additions and 7 deletions

View file

@ -1,5 +1,26 @@
import os
import dotenv
import redis
def get_redis_connection() -> redis.Redis:
return redis.Redis(decode_responses=True)
dotenv.load_dotenv()
URL = os.environ.get("REDIS_OM_URL", None)
def get_redis_connection(**kwargs) -> redis.Redis:
# If someone passed in a 'url' parameter, or specified a REDIS_OM_URL
# environment variable, we'll create the Redis client from the URL.
url = kwargs.pop("url", URL)
if not url:
import ipdb
ipdb.set_trace()
if url:
return redis.from_url(url, **kwargs)
# Decode from UTF-8 by default
if "decode_responses" not in kwargs:
kwargs["decode_responses"] = True
return redis.Redis(**kwargs)

View file

@ -37,6 +37,7 @@ from pydantic.utils import Representation
from redis.client import Pipeline
from ulid import ULID
from ..connections import get_redis_connection
from .encoders import jsonable_encoder
from .render_tree import render_tree
from .token_escaper import TokenEscaper
@ -997,7 +998,7 @@ class ModelMeta(ModelMetaclass):
)
if not getattr(new_class._meta, "database", None):
new_class._meta.database = getattr(
base_meta, "database", redis.Redis(decode_responses=True)
base_meta, "database", get_redis_connection()
)
if not getattr(new_class._meta, "primary_key_creator_cls", None):
new_class._meta.primary_key_creator_cls = getattr(