示例#1
0
    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]
示例#2
0
    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