Refactor service dependencies and imports

This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-12-06 10:44:23 -03:00
commit 5eaebc4089
5 changed files with 25 additions and 15 deletions

View file

@ -1,7 +1,9 @@
import abc
from langflow.services.base import Service
class BaseCacheService(abc.ABC):
class BaseCacheService(Service):
"""
Abstract base class for a cache.
"""

View file

@ -12,9 +12,9 @@ if TYPE_CHECKING:
def initialize_database(fix_migration: bool = False):
logger.debug("Initializing database")
from langflow.services import ServiceType, service_manager
from langflow.services.deps import get_db_service
database_service: "DatabaseService" = service_manager.get(ServiceType.DATABASE_SERVICE)
database_service: "DatabaseService" = get_db_service()
try:
database_service.create_db_and_tables()
except Exception as exc:

View file

@ -16,48 +16,48 @@ if TYPE_CHECKING:
def get_credential_service() -> "CredentialService":
return service_manager.get(ServiceType.CREDENTIAL_SERVICE)
return service_manager.get(ServiceType.CREDENTIAL_SERVICE) # type: ignore
def get_plugins_service() -> "PluginService":
return service_manager.get(ServiceType.PLUGIN_SERVICE)
return service_manager.get(ServiceType.PLUGIN_SERVICE) # type: ignore
def get_settings_service() -> "SettingsService":
try:
return service_manager.get(ServiceType.SETTINGS_SERVICE)
return service_manager.get(ServiceType.SETTINGS_SERVICE) # type: ignore
except ValueError:
# initialize settings service
from langflow.services.manager import initialize_settings_service
initialize_settings_service()
return service_manager.get(ServiceType.SETTINGS_SERVICE)
return service_manager.get(ServiceType.SETTINGS_SERVICE) # type: ignore
def get_db_service() -> "DatabaseService":
return service_manager.get(ServiceType.DATABASE_SERVICE)
return service_manager.get(ServiceType.DATABASE_SERVICE) # type: ignore
def get_session() -> Generator["Session", None, None]:
db_service = service_manager.get(ServiceType.DATABASE_SERVICE)
db_service = get_db_service()
yield from db_service.get_session()
def get_cache_service() -> "BaseCacheService":
return service_manager.get(ServiceType.CACHE_SERVICE)
return service_manager.get(ServiceType.CACHE_SERVICE) # type: ignore
def get_session_service() -> "SessionService":
return service_manager.get(ServiceType.SESSION_SERVICE)
return service_manager.get(ServiceType.SESSION_SERVICE) # type: ignore
def get_task_service() -> "TaskService":
return service_manager.get(ServiceType.TASK_SERVICE)
return service_manager.get(ServiceType.TASK_SERVICE) # type: ignore
def get_chat_service() -> "ChatService":
return service_manager.get(ServiceType.CHAT_SERVICE)
return service_manager.get(ServiceType.CHAT_SERVICE) # type: ignore
def get_store_service() -> "StoreService":
return service_manager.get(ServiceType.STORE_SERVICE)
return service_manager.get(ServiceType.STORE_SERVICE) # type: ignore

View file

@ -1,6 +1,13 @@
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from langflow.services.base import Service
class ServiceFactory:
def __init__(self, service_class):
self.service_class = service_class
def create(self, *args, **kwargs):
def create(self, *args, **kwargs) -> "Service":
raise NotImplementedError

View file

@ -1,3 +1,4 @@
from langflow.services.auth.utils import create_super_user, verify_password
from langflow.services.database.utils import initialize_database
from langflow.services.manager import service_manager