from apollo_utils.core.constants.dsp import DSP from apollo_utils.core.utils.ext_enum import ALL from apollo_utils.service.schemas.fields.datetime import DateStringField from marshmallow import fields, validate from server.schemas.base.schemas import RequestSchema, Schema class TracksInsights: class Request(RequestSchema): isrc = fields.String(required=True, validate=validate.Length(min=1)) dsp = fields.String( validate=validate.OneOf((DSP.SPOTIFY.value, DSP.APPLE.value, DSP.AMAZON.value, ALL)), missing=ALL ) include_worldwide = fields.Boolean(missing=False) include_zero_weeks = fields.Boolean(missing=False) class Response(Schema): peak_streams_date = DateStringField() peak_streams_number = fields.Integer() strike_weeks = fields.Integer() country_code = fields.String() rank = fields.Integer() streams_last_day = fields.Integer() streams_last_week = fields.Integer() streams_previous_week = fields.Integer() trend = fields.Integer()