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.spotify.track_position_change import V1PlaylistsSpotifyPosition from server.utils.response import dump_response_schema router = web.RouteTableDef() @router.get(BASE_API_PREFIX + "/v1/playlists/spotify/position/") @docs( tags=["playlists", "spotify"], summary="Track position change in playlist.", ) @querystring_schema(V1PlaylistsSpotifyPosition.Request) @dump_response_schema(V1PlaylistsSpotifyPosition.Response) async def get(request: web.Request) -> web.Response: params = request["querystring"] isrc, playlist_id, start_date, end_date = ( params["isrc_list"], params["playlist_id"], params["start_date"], params["end_date"], ) result = await get_track_in_playlist_position_change( dsp=DSP.SPOTIFY, isrc=isrc, playlist_id=playlist_id, start_date=start_date, end_date=end_date ) return {"series": [{"entries": result}]}