redis-om-python icon indicating copy to clipboard operation
redis-om-python copied to clipboard

support late creation of DB connection using callable for Meta.database

Open dansan opened this issue 1 year ago • 1 comments

Fix for #519:

  • When RedisModel.Meta.database has not been set, the meta class won't set it. No DB connection is configured or opened.
  • When MyRedisModel.db() is called, the old behavior is retained: if MyRedisModel.Meta.database is set, it'll be used, otherwise get_redis_connection() is called.
    • When MyRedisModel.Meta.database is a function object, it is executed and its return value is returned.
    • Subsequent calls to MyRedisModel.db() return the same object.

So now, when your database address is not known at import time, you set Meta.database to a function object that fetches that information at runtime, as late as possible (upon DB usage).

dansan avatar Jul 24 '23 21:07 dansan

This is a big relief. Works ...

  • when testing with JsonModel/EmbeddedJsonModels without spinning up a redis instance.
  • when Models are simply used to exchange data between two system or classes (DTOs).

Thanks. Hope this get's merged asap.

svabra avatar Jul 28 '23 19:07 svabra