fix(view): fix index pages api resolving

This commit is contained in:
2026-07-02 01:30:35 +03:00
parent 1d13f6e05d
commit 4fdb7e9717
4 changed files with 24 additions and 16 deletions

View File

@@ -1,21 +1,19 @@
from collections import defaultdict
from .api import API, Api
class ApiBundle:
def __init__(self, values: list[Api]):
self._values = values
self._by_provider = {value.provider: value for value in values}
self._providers_by_api = defaultdict(list)
self._api_map = {}
for value in self._values:
self._providers_by_api[value.type].append(value.provider)
self._api_map[(value.type, value.provider)] = value
def get_api_providers(self, api_type: type[API]) -> list[str]:
result = []
for value in self._values:
if isinstance(value, api_type):
result.append(value.provider)
return result
return self._providers_by_api[api_type.TYPE]
def get_api(self, api_type: type[API], provider: str) -> API:
for value in self._values:
if isinstance(value, api_type):
if provider == value.provider:
return value
raise ValueError(api_type, provider)
return self._api_map[(api_type.TYPE, provider)]