from apollo_utils.service.legacy.schemas.mixins.market import MarketGlobalMixin from apollo_utils.service.schemas.base import RequestSchema from apollo_utils.service.schemas.fields.list import SplitUniqueListField from apollo_utils.service.schemas.mixins.market import MarketNoneMixin from marshmallow import Schema, fields class PlaylistsTopWeekly: class Request(RequestSchema, MarketGlobalMixin): include_obsolete = fields.Boolean(load_default=True) class Response(Schema): id = fields.String() name = fields.String() class PlaylistsPreviousTopDates: class RequestPostBody(RequestSchema, MarketNoneMixin): playlist_id_list = SplitUniqueListField( fields.String(), data_key="playlist_ids", force_list=True, missing=None ) period = fields.Integer(missing=None) track_isrc_map = fields.Dict( required=True, data_key="tracks_isrc", example={"USSM11902498": "2019-04-04", "USRC12202117": "2022-06-09"} ) class Response(Schema): playlist_id = fields.String() isrc = fields.String() entry_date = fields.Date() exit_date = fields.Date() class PlaylistsStreamsWeekly: class Request(RequestSchema, MarketGlobalMixin): playlist_ids = fields.List(fields.String(), required=True, load_from="playlist_ids") class Response(Schema): playlist_id = fields.String() streams_latest = fields.Integer()