from apollo_utils.service.schemas.base import RequestSchema from apollo_utils.service.schemas.fields.list import SplitUniqueListField from marshmallow import Schema, fields from server.schemas.delphi.images import ImageSchema from server.schemas.delphi.mixins.offset_limit import DelphiOffsetLimitMixin from server.schemas.delphi.mixins.sorting import DelphiSortingMixin class DelphiChartsV3: class RequestSchema(DelphiSortingMixin, DelphiOffsetLimitMixin, RequestSchema): chart_group = fields.String() country_code = fields.String() dsp_list = SplitUniqueListField(fields.String(), data_key="dsp") class ResponseSchema(Schema): class Meta: class ItemsSchema(Schema): class Meta: class DspSchema(Schema): class Meta: include = { "name": fields.String(required=True), "dsp_id": fields.String(required=True), "slug": fields.String(required=True), } include = { "name": fields.String(required=True), "chart_id": fields.String(required=True), "chart_group": fields.String(required=True), "num_tracks": fields.Integer(required=True), "country_code": fields.String(required=True), "rank": fields.Integer(required=True), "dsp": fields.Nested(DspSchema), "image": fields.Nested(ImageSchema), } include = {"items": fields.List(fields.Nested(ItemsSchema)), "count": fields.Integer(required=True)}