from typing import List, Mapping, Union from server.dna.constants import ARTIST, TRACK from server.dna.helpers.base import BaseSearchesHelper from server.artist.helpers.search_by_name import ArtistSearchByNameHelper from server.track.helpers.search_by_name import TrackSearchByNameHelper __all__ = ["CatgoryHelper"] INDEX_MAPPER: Mapping = { ARTIST: ArtistSearchByNameHelper, TRACK: TrackSearchByNameHelper, } class _CatgoryHelper(BaseSearchesHelper): async def _get_results( self, entities_ids: List[str], entity_type: str, ) -> List: index = INDEX_MAPPER[entity_type]._index_name data = await self._make_search(entities_ids, index) if not data: return [] results = self._update_data(data) return results async def get_entities(self, entities_ids: List[str], entity_type: str) -> List: entities = await self._get_results(entities_ids, entity_type) return entities async def get_spotify_entity_id(self, entity_id: str, entity_type: str) -> Union[str, None]: entity = await self.get_entities([entity_id], entity_type) if not entity: return None return entity[0][f"spotify_{entity_type}_id"] CatgoryHelper = _CatgoryHelper()