def __init__(self, tmpdir): # type: (LocalPath) -> None self.settings = Settings() self.settings.database = db_url(tmpdir) self.plugins = PluginProxy([]) # Reinitialize the global plugin proxy with an empty set of plugins in case a previous test # initialized plugins. This can go away once a plugin proxy is injected into everything # that needs it instead of maintained as a global. set_global_plugin_proxy(self.plugins) self.initialize_database() self.session = SessionFactory(self.settings).create_session() self.graph = GroupGraph() session_factory = SingletonSessionFactory(self.session) self.repository_factory = GraphRepositoryFactory( self.settings, self.plugins, session_factory, self.graph) self.sql_repository_factory = SQLRepositoryFactory( self.settings, self.plugins, session_factory) self.service_factory = ServiceFactory(self.settings, self.plugins, self.repository_factory) self.usecase_factory = UseCaseFactory(self.settings, self.plugins, self.service_factory) self._transaction_service = self.service_factory.create_transaction_service( )
def create_sql_usecase_factory(settings, session=None): # type: (Settings, Optional[Session]) -> UseCaseFactory """Create a SQL-backed UseCaseFactory, with optional injection of a Session. Session injection is supported primarily for tests. If not injected, it will be created on demand. """ repository_factory = SQLRepositoryFactory(settings, session) service_factory = ServiceFactory(repository_factory) return UseCaseFactory(service_factory)
def create_graph_usecase_factory(settings, session=None, graph=None): # type: (Settings, Optional[Session], Optional[GroupGraph]) -> UseCaseFactory """Create a graph-backed UseCaseFactory, with optional injection of a Session and GroupGraph. Session and graph injection is supported primarily for tests. If not injected, they will be created on demand. """ repository_factory = GraphRepositoryFactory(settings, session, graph) service_factory = ServiceFactory(repository_factory) return UseCaseFactory(service_factory)
def __init__(self, tmpdir): # type: (LocalPath) -> None self.session = self.create_session(tmpdir) self.graph = GroupGraph() self.settings = Settings({"database": db_url(tmpdir)}) self.repository_factory = GraphRepositoryFactory( self.settings, self.session, self.graph) self.service_factory = ServiceFactory(self.repository_factory) self.usecase_factory = UseCaseFactory(self.service_factory) self._transaction_service = self.service_factory.create_transaction_service( )
def create_sql_usecase_factory(settings, plugins, session_factory=None): # type: (Settings, PluginProxy, Optional[SessionFactory]) -> UseCaseFactory """Create a SQL-backed UseCaseFactory, with optional injection of a Session. Session factory injection is supported primarily for tests. If not injected, it will be created on demand. """ if not session_factory: session_factory = SessionFactory(settings) repository_factory = SQLRepositoryFactory(settings, plugins, session_factory) service_factory = ServiceFactory(settings, plugins, repository_factory) return UseCaseFactory(settings, plugins, service_factory)
def open_database(self) -> None: self.session = SessionFactory(self.settings).create_session() session_factory = SingletonSessionFactory(self.session) self.repository_factory = GraphRepositoryFactory( self.settings, self.plugins, session_factory, self.graph) self.sql_repository_factory = SQLRepositoryFactory( self.settings, self.plugins, session_factory) self.service_factory = ServiceFactory(self.settings, self.plugins, self.repository_factory) self.usecase_factory = UseCaseFactory(self.settings, self.plugins, self.service_factory) self._transaction_service = self.service_factory.create_transaction_service( )
def create_graph_usecase_factory( settings, # type: Settings plugins, # type: PluginProxy session_factory=None, # type: Optional[SessionFactory] graph=None, # type: Optional[GroupGraph] ): # type: (...) -> UseCaseFactory """Create a graph-backed UseCaseFactory, with optional injection of a Session and GroupGraph. Session factory and graph injection is supported primarily for tests. If not injected, they will be created on demand. """ if not session_factory: session_factory = SessionFactory(settings) repository_factory = GraphRepositoryFactory(settings, plugins, session_factory, graph) service_factory = ServiceFactory(settings, plugins, repository_factory) return UseCaseFactory(settings, plugins, service_factory)