Files
dify/api/extensions/application_services/datasets.py

33 lines
1.2 KiB
Python

"""Shared dataset dependencies for knowledge and data-source use cases."""
from dataclasses import dataclass
from sqlalchemy.orm import Session, sessionmaker
from configs import dify_config
from repositories.knowledge.dataset_repository import SQLAlchemyDatasetRepository
from repositories.knowledge.document_repository import SQLAlchemyDocumentRepository
from services.knowledge.dataset_access import DatasetAccessService, WorkspaceRoleReader
@dataclass(frozen=True, slots=True)
class DatasetDependencies:
datasets: SQLAlchemyDatasetRepository
documents: SQLAlchemyDocumentRepository
access: DatasetAccessService
def build_dataset_dependencies(
*, database_client: sessionmaker[Session], workspace_roles: WorkspaceRoleReader
) -> DatasetDependencies:
datasets = SQLAlchemyDatasetRepository(session_factory=database_client)
return DatasetDependencies(
datasets=datasets,
documents=SQLAlchemyDocumentRepository(session_factory=database_client),
access=DatasetAccessService(
datasets=datasets,
workspace_roles=workspace_roles,
legacy_permissions_enabled=not dify_config.RBAC_ENABLED,
),
)