from django.conf import settings from apps.providers.adapters.balldontlie_provider import BalldontlieProviderAdapter from apps.providers.adapters.mvp_provider import MvpDemoProviderAdapter from apps.providers.exceptions import ProviderNotFoundError PROVIDER_REGISTRY = { MvpDemoProviderAdapter.namespace: MvpDemoProviderAdapter, BalldontlieProviderAdapter.namespace: BalldontlieProviderAdapter, } def get_default_provider_namespace() -> str: if settings.PROVIDER_DEFAULT_NAMESPACE: return settings.PROVIDER_DEFAULT_NAMESPACE backend_map = { "demo": settings.PROVIDER_NAMESPACE_DEMO, "balldontlie": settings.PROVIDER_NAMESPACE_BALLDONTLIE, } return backend_map.get(settings.PROVIDER_BACKEND, settings.PROVIDER_NAMESPACE_DEMO) def get_provider(namespace: str | None = None): provider_namespace = namespace or get_default_provider_namespace() provider_cls = PROVIDER_REGISTRY.get(provider_namespace) if not provider_cls: raise ProviderNotFoundError(f"Unknown provider namespace: {provider_namespace}") return provider_cls()