from api import cache from external_api.base.clients.client_factory import ApiClientFactory from external_api.schemas import ApolloSearchRequest from external_api.tracks_search.search_service import ApolloSearchService from external_api.utils import cache_key_prefix from config import APOLLO_CACHE_TIMEOUT_SEC from auth.auth_view import AuthorizedView from utils.handlers import get_request_query_model from utils.test_helpers import sync class ApolloSearchView(AuthorizedView): service = ApolloSearchService(ApiClientFactory.apollo_api_client()) @cache.cached(timeout=APOLLO_CACHE_TIMEOUT_SEC, key_prefix=cache_key_prefix) @sync async def get(self): params = get_request_query_model(ApolloSearchRequest) result = await self.service.search(params.query) return result