from aiohttp import web from aiohttp_apispec import docs, querystring_schema from server.constants import BASE_API_PREFIX, DSP from server.scenarios.playlists.positions.common import get_track_in_playlist_position_change from server.schemas.playlists.apple.track_position_change import V1PlaylistsApplePosition from server.utils.response import dump_response_schema router = web.RouteTableDef() @router.get(BASE_API_PREFIX + "/v1/playlists/apple/position/") @docs( tags=["playlists", "apple"], summary="Track position change in playlist.", ) @querystring_schema(V1PlaylistsApplePosition.Request) @dump_response_schema(V1PlaylistsApplePosition.Response) async def get(request: web.Request) -> web.Response: params = request["querystring"] isrc, playlist_id, country_code, start_date, end_date = ( params["isrc_list"], params["playlist_id"], params["country"], params["start_date"], params["end_date"], ) result = await get_track_in_playlist_position_change( dsp=DSP.APPLE, isrc=isrc, playlist_id=playlist_id, start_date=start_date, end_date=end_date, country_code=country_code, ) return {"series": [{"entries": result}]}