2025-07-14 19:49:18 +08:00
|
|
|
import warnings
|
|
|
|
warnings.warn(
|
|
|
|
"triggers.registry is deprecated. Use triggers.domain.services.ProviderRegistryService instead.",
|
|
|
|
DeprecationWarning,
|
|
|
|
stacklevel=2
|
|
|
|
)
|
|
|
|
|
2025-06-30 18:57:34 +08:00
|
|
|
from typing import Dict, List, Optional
|
|
|
|
from .core import TriggerProvider, TriggerType
|
2025-07-10 15:02:15 +08:00
|
|
|
from .providers import ScheduleTriggerProvider
|
2025-06-30 18:57:34 +08:00
|
|
|
|
|
|
|
class TriggerRegistry:
|
|
|
|
"""Registry for trigger providers."""
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
self._providers: Dict[TriggerType, TriggerProvider] = {}
|
|
|
|
self._initialize_default_providers()
|
|
|
|
|
|
|
|
def _initialize_default_providers(self):
|
|
|
|
"""Initialize default trigger providers."""
|
2025-07-10 15:02:15 +08:00
|
|
|
self.register_provider(ScheduleTriggerProvider())
|
2025-06-30 18:57:34 +08:00
|
|
|
|
|
|
|
def register_provider(self, provider: TriggerProvider):
|
|
|
|
"""Register a trigger provider."""
|
|
|
|
self._providers[provider.trigger_type] = provider
|
|
|
|
|
|
|
|
def get_provider(self, trigger_type: TriggerType) -> Optional[TriggerProvider]:
|
|
|
|
"""Get a trigger provider by type."""
|
|
|
|
return self._providers.get(trigger_type)
|
|
|
|
|
|
|
|
def get_all_providers(self) -> Dict[TriggerType, TriggerProvider]:
|
|
|
|
"""Get all registered providers."""
|
|
|
|
return self._providers.copy()
|
|
|
|
|
|
|
|
def get_supported_types(self) -> List[TriggerType]:
|
|
|
|
"""Get list of supported trigger types."""
|
|
|
|
return list(self._providers.keys())
|
|
|
|
|
|
|
|
def get_provider_schemas(self) -> Dict[str, Dict]:
|
|
|
|
"""Get configuration schemas for all providers."""
|
|
|
|
schemas = {}
|
|
|
|
for trigger_type, provider in self._providers.items():
|
|
|
|
trigger_type_str = trigger_type.value if hasattr(trigger_type, 'value') else str(trigger_type)
|
|
|
|
schemas[trigger_type_str] = provider.get_config_schema()
|
|
|
|
return schemas
|
|
|
|
|
|
|
|
def is_supported(self, trigger_type: TriggerType) -> bool:
|
|
|
|
"""Check if a trigger type is supported."""
|
|
|
|
return trigger_type in self._providers
|
|
|
|
|
|
|
|
trigger_registry = TriggerRegistry()
|