from dataclasses import dataclass from typing import Any, Dict, List from server.artist.utils import ImageService from server.db.constants import TRACK_SEARCH_INDEX from server.dna.constants import TRACK from server.core.helpers.search_by_name import SeachByNameHelper, SeachByNameBaseObject __all__ = ["_TrackSearchByNameHelper"] @dataclass class TrackSeachByNameDataObject: artwork_url: str artwork_url_alt: str artist_name: str name: str score: float @dataclass class TrackSeachByNameObject(SeachByNameBaseObject): data: TrackSeachByNameDataObject class _TrackSearchByNameHelper(SeachByNameHelper): _index_name: str = TRACK_SEARCH_INDEX def get_data(self, results: List[Dict[str, Any]]): res = [] for result in results: res.append( TrackSeachByNameObject( entity_type=TRACK, entity_id=result["id"], data=dict( # type: ignore name=result["name"], artwork_url=ImageService.get_track_img_url(result["spotify_track_id"]), artwork_url_alt=result["artwork_url"], artist_name=result["artist_name"], score=result["score"], ), ) ) return res TrackSearchByNameHelper = _TrackSearchByNameHelper()