from apollo_utils.service.schemas.fields.datetime import DateStringField from apollo_utils.service.schemas.fields.enum import EnumListField from apollo_utils.service.schemas.mixins.market import get_market_mixin from marshmallow import fields from server.constants.tracks import TracksGTPInclude from server.schemas.base.schemas import RequestSchema, Schema class TracksGTP: class Request(RequestSchema, get_market_mixin(max_len=18)): """Request schema to get GTP tracks.""" gtp_date = fields.Date(required=True, data_key="date") type_id = fields.Integer(required=True) include = EnumListField(TracksGTPInclude, missing=[], unify=True, allow_all=True) class Response(Schema): """Response GTP tracks bulk schema.""" class TracksGTPItem(Schema): """Single GTP track output schema.""" id = fields.String(required=True) isrc = fields.String(default=None) data = fields.Raw(default=None) in_chart = fields.Bool() weeks = fields.Integer(default=None) is_re_enter = fields.Bool(default=None) tracks = fields.List(fields.Nested(TracksGTPItem)) chart_date = DateStringField() streams_date = DateStringField() gtp_date = DateStringField() hot_hits_date = DateStringField()