mirror of
https://github.com/langgenius/dify.git
synced 2026-11-10 21:35:45 +08:00
61 lines
2.5 KiB
Python
61 lines
2.5 KiB
Python
"""Composition of Installed App use cases."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
from repositories.installed_app_repository import SQLAlchemyInstalledAppRepository
|
|
from services.conversation_command_service import ConversationCommandService
|
|
from services.conversation_name_service import ConversationNameService
|
|
from services.conversation_query_service import ConversationQueryService
|
|
from services.installed_app_access_service import InstalledAppAccessService
|
|
from services.installed_app_conversation_service import InstalledAppConversationService
|
|
from services.installed_app_generation_adapters import AppGenerateServiceRuntime
|
|
from services.installed_app_generation_service import InstalledAppGenerationService
|
|
from services.installed_app_service import InstalledAppService, WorkspaceRoleLookup
|
|
from services.webapp_access_query_service import WebAppAccessQueryService
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class InstalledAppServices:
|
|
access: InstalledAppAccessService
|
|
management: InstalledAppService
|
|
generation: InstalledAppGenerationService
|
|
conversations: InstalledAppConversationService
|
|
|
|
|
|
def build_installed_app_services(
|
|
*,
|
|
database_client: sessionmaker[Session],
|
|
conversation_queries: ConversationQueryService,
|
|
conversation_names: ConversationNameService,
|
|
conversation_commands: ConversationCommandService,
|
|
webapp_access: WebAppAccessQueryService,
|
|
get_workspace_role: WorkspaceRoleLookup,
|
|
webapp_auth_enabled: bool,
|
|
) -> InstalledAppServices:
|
|
installed_apps = SQLAlchemyInstalledAppRepository(session_factory=database_client)
|
|
access = InstalledAppAccessService(
|
|
installed_apps=installed_apps,
|
|
is_user_allowed=webapp_access.is_user_allowed,
|
|
get_access_modes=webapp_access.batch_get_access_modes,
|
|
get_user_permissions=webapp_access.batch_get_user_permissions,
|
|
)
|
|
return InstalledAppServices(
|
|
access=access,
|
|
management=InstalledAppService(
|
|
installed_apps=installed_apps,
|
|
get_workspace_role=get_workspace_role,
|
|
get_visible_app_ids=access.get_visible_app_ids if webapp_auth_enabled else None,
|
|
),
|
|
generation=InstalledAppGenerationService(
|
|
usage=installed_apps,
|
|
runtime=AppGenerateServiceRuntime(session_factory=database_client),
|
|
),
|
|
conversations=InstalledAppConversationService(
|
|
queries=conversation_queries,
|
|
names=conversation_names,
|
|
commands=conversation_commands,
|
|
),
|
|
)
|