Source code for save_to_db.adapters.utils.adapter_manager

import inspect
from .. import ADAPTERS


__cache = {}  # {model_cls: adapter_cls, ...}


[docs]def get_adapter_cls(model_or_cls): """Returns database adapter class for given ORM model instance or class. :param model_or_cls: an ORM model instance or class. :returns: An adapter class (subclass of :py:class:`~.adapter_base.AdapterBase`) for the model. """ global __cache cls = model_or_cls if not inspect.isclass(cls): cls = model_or_cls.__class__ if cls in __cache: return __cache[cls] for adapter_cls in ADAPTERS: if adapter_cls.is_usable(cls): __cache[cls] = adapter_cls return adapter_cls