from apollo_utils.service.schemas.base import RequestSchema from apollo_utils.service.schemas.fields.isrc import IsrcField from apollo_utils.service.schemas.mixins.date import DateRangeMixin from apollo_utils.service.schemas.mixins.isrc import get_isrc_list_mixin from apollo_utils.service.schemas.mixins.market import DelphiDefaultMarketMixin from marshmallow import fields from server.legacy.analytics.mixins import MarketMixin, PerVendorMixin class TotalGlobalStreamsBulkDeserializer(get_isrc_list_mixin(), MarketMixin, RequestSchema): """Bulk schema for retrieving total number of global streams.""" end_date = fields.Date(required=False, format="iso") class DailyWeeklyStreamsDeserializer(RequestSchema, MarketMixin, PerVendorMixin): """Daily and weekly based total streams counter schema for global and specific markets.""" isrc = IsrcField(required=True) last_date = fields.Date(required=False, format="iso") class StreamsDatesDeserializer(get_isrc_list_mixin(), RequestSchema): """First stream dates and last spotify stream dates for isrc list.""" include_last_dates = fields.Boolean(missing=True) class SimpleWeekStreamsDeserializer(RequestSchema, MarketMixin, PerVendorMixin): """Params deserializer for simple week and one before steams data.""" isrc = IsrcField(required=True) last_date = fields.Date(required=False, format="iso") class DateRangeStreamsDeserializer(RequestSchema, DelphiDefaultMarketMixin, DateRangeMixin, PerVendorMixin): """Params deserializer for date range streams count view.""" isrc = IsrcField(required=True)