from apollo_utils.service.schemas.base import RequestSchema from marshmallow import Schema, fields from src.legacy.core.serializers import get_pagination_mixin class PlaylistsNMF: class Response(Schema): playlist_id = fields.String(data_key="playlistId") market = fields.String(data_key="countryCode") rank = fields.Integer() followers = fields.Integer(default=0) last_date = fields.Date(data_key="fridayLastUpdatedDate") last_added = fields.DateTime(data_key="trackLastAdded", format="%Y-%m-%dT%H:%M:%S+00:00") class PlaylistsNMFTracks: class Request(RequestSchema, get_pagination_mixin(page_limit=None)): nmf_date = fields.Date(required=True) class Response(Schema): class TrackItem(Schema): class PlaylistItem(Schema): playlistId = fields.String() countryCode = fields.String() addedDate = fields.DateTime() position = fields.Integer() playlistImageUrl = fields.String() isrc = fields.String() trackId = fields.String() topTenFeatureCount = fields.Integer() playlists = fields.List(fields.Nested(PlaylistItem)) items = fields.List(fields.Nested(TrackItem))