def get_storage(self, model: Type[BaseModel]): if model not in self.model_settings: raise MalformedConfigurationError(f"No configuration for {model}") model_settings = self.model_settings[model].config.get( self.model_settings[model].database, None) if model_settings is None: raise MalformedConfigurationError(f"No model settings for '{model}' and database " f"'{self.model_settings[model].database}'") if model in self._cached_async_decorators: return self._cached_async_decorators[model] self._cached_async_decorators[model] = AsyncDataBase(model, self.model_settings[model], self.general_config) return self._cached_async_decorators[model]
def __init__(self, config: GeneralConfig): self.general_config = config self.model_settings = {} for model in config.models: # TODO: improve model loading model_class = locate(model.import_path) if not model_class: raise MalformedConfigurationError(f"Couldn't import '{model.import_path}'") if not issubclass(model_class, BaseModel): raise MalformedConfigurationError(f"'{model.import_path}'" f" must be a subclass of BaseModel") self.model_settings[model_class] = model