mirror of
https://github.com/langgenius/dify.git
synced 2026-11-13 06:41:07 +08:00
# Conflicts: # api/.importlinter # api/controllers/console/__init__.py # api/controllers/console/workspace/account.py # api/core/app/apps/message_based_app_generator.py # api/core/app/entities/app_invoke_entities.py # api/core/tools/tool_manager.py # api/extensions/application_services/installed_app.py # api/extensions/ext_application_services.py # api/models/__init__.py # api/models/workflow.py # api/openapi/markdown/console-openapi.md # api/openapi/markdown/web-openapi.md # api/repositories/account/repository.py # api/repositories/api_workflow_run_repository.py # api/repositories/app/console_repository.py # api/repositories/app_definition_query_repository.py # api/services/app_definition_query_service.py # api/services/app_generate_service.py # api/services/conversation_service.py # api/services/message_service.py # api/services/web_conversation_service.py # api/tasks/app_generate/workflow_execute_task.py # api/tests/unit_tests/controllers/console/auth/test_login.py # api/tests/unit_tests/controllers/web/test_app.py # api/tests/unit_tests/core/app/apps/advanced_chat/test_app_generator.py # api/tests/unit_tests/repositories/app/test_console_repository.py # api/tests/unit_tests/services/test_app_definition_query_service.py # api/tests/unit_tests/services/test_app_generate_service.py # api/tests/unit_tests/services/test_message_service.py # docker/envs/core-services/api.env.example # packages/contracts/generated/api/console/account/types.gen.ts # packages/contracts/generated/api/console/account/zod.gen.ts # packages/contracts/generated/api/console/apps/errors.gen.ts # packages/contracts/generated/api/console/apps/orpc.gen.ts # packages/contracts/generated/api/console/errors.gen.ts # packages/contracts/generated/api/console/workspaces/errors.gen.ts # packages/contracts/generated/api/console/workspaces/orpc.gen.ts # packages/contracts/generated/api/web/errors.gen.ts # packages/contracts/generated/api/web/orpc.gen.ts # packages/contracts/generated/api/web/types.gen.ts # packages/contracts/generated/api/web/zod.gen.ts
80 lines
3.6 KiB
Python
80 lines
3.6 KiB
Python
"""Composition of Installed App use cases."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
from clients.plugin.auth import PluginCredentialAuthClient
|
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
|
from repositories.credentials.query_repository import CredentialQueryRepository
|
|
from repositories.installed_app_connection_repository import SQLAlchemyInstalledConnectionRepository
|
|
from repositories.installed_app_repository import SQLAlchemyInstalledAppRepository
|
|
from services.app_definition_query_service import AppDefinitionQueryService
|
|
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_connections import InstalledAppConnectionService
|
|
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
|
|
from services.workflow_test_credential_adapters import WorkspaceTestCredentialGateway
|
|
|
|
|
|
@dataclass(frozen=True, slots=True)
|
|
class InstalledAppServices:
|
|
access: InstalledAppAccessService
|
|
management: InstalledAppService
|
|
generation: InstalledAppGenerationService
|
|
conversations: InstalledAppConversationService
|
|
connections: InstalledAppConnectionService
|
|
|
|
|
|
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,
|
|
app_definitions: AppDefinitionQueryService,
|
|
) -> 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(
|
|
connections=InstalledAppConnectionService(
|
|
store=SQLAlchemyInstalledConnectionRepository(session_factory=database_client),
|
|
access=access,
|
|
definitions=app_definitions,
|
|
credentials=WorkspaceTestCredentialGateway(
|
|
queries=CredentialQueryRepository(session_factory=database_client),
|
|
auth=PluginCredentialAuthClient(),
|
|
invoke_from=InvokeFrom.EXPLORE,
|
|
),
|
|
),
|
|
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,
|
|
),
|
|
)
|