| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- """
 - DifyAPI Repository Factory for creating repository instances.
 - 
 - This factory is specifically designed for DifyAPI repositories that handle
 - service-layer operations with dependency injection patterns.
 - """
 - 
 - from sqlalchemy.orm import sessionmaker
 - 
 - from configs import dify_config
 - from core.repositories import DifyCoreRepositoryFactory, RepositoryImportError
 - from libs.module_loading import import_string
 - from repositories.api_workflow_node_execution_repository import DifyAPIWorkflowNodeExecutionRepository
 - from repositories.api_workflow_run_repository import APIWorkflowRunRepository
 - 
 - 
 - class DifyAPIRepositoryFactory(DifyCoreRepositoryFactory):
 -     """
 -     Factory for creating DifyAPI repository instances based on configuration.
 - 
 -     This factory handles the creation of repositories that are specifically designed
 -     for service-layer operations and use dependency injection with sessionmaker
 -     for better testability and separation of concerns.
 -     """
 - 
 -     @classmethod
 -     def create_api_workflow_node_execution_repository(
 -         cls, session_maker: sessionmaker
 -     ) -> DifyAPIWorkflowNodeExecutionRepository:
 -         """
 -         Create a DifyAPIWorkflowNodeExecutionRepository instance based on configuration.
 - 
 -         This repository is designed for service-layer operations and uses dependency injection
 -         with a sessionmaker for better testability and separation of concerns. It provides
 -         database access patterns specifically needed by service classes, handling queries
 -         that involve database-specific fields and multi-tenancy concerns.
 - 
 -         Args:
 -             session_maker: SQLAlchemy sessionmaker to inject for database session management.
 - 
 -         Returns:
 -             Configured DifyAPIWorkflowNodeExecutionRepository instance
 - 
 -         Raises:
 -             RepositoryImportError: If the configured repository cannot be imported or instantiated
 -         """
 -         class_path = dify_config.API_WORKFLOW_NODE_EXECUTION_REPOSITORY
 - 
 -         try:
 -             repository_class = import_string(class_path)
 -             return repository_class(session_maker=session_maker)  # type: ignore[no-any-return]
 -         except (ImportError, Exception) as e:
 -             raise RepositoryImportError(
 -                 f"Failed to create DifyAPIWorkflowNodeExecutionRepository from '{class_path}': {e}"
 -             ) from e
 - 
 -     @classmethod
 -     def create_api_workflow_run_repository(cls, session_maker: sessionmaker) -> APIWorkflowRunRepository:
 -         """
 -         Create an APIWorkflowRunRepository instance based on configuration.
 - 
 -         This repository is designed for service-layer WorkflowRun operations and uses dependency
 -         injection with a sessionmaker for better testability and separation of concerns. It provides
 -         database access patterns specifically needed by service classes for workflow run management,
 -         including pagination, filtering, and bulk operations.
 - 
 -         Args:
 -             session_maker: SQLAlchemy sessionmaker to inject for database session management.
 - 
 -         Returns:
 -             Configured APIWorkflowRunRepository instance
 - 
 -         Raises:
 -             RepositoryImportError: If the configured repository cannot be imported or instantiated
 -         """
 -         class_path = dify_config.API_WORKFLOW_RUN_REPOSITORY
 - 
 -         try:
 -             repository_class = import_string(class_path)
 -             return repository_class(session_maker=session_maker)  # type: ignore[no-any-return]
 -         except (ImportError, Exception) as e:
 -             raise RepositoryImportError(f"Failed to create APIWorkflowRunRepository from '{class_path}': {e}") from e
 
 
  |