from apollo_utils.service.schemas.base import RequestSchema from apollo_utils.service.schemas.fields.list import SplitUniqueListField from apollo_utils.service.schemas.mixins.country_code import DelphiCountryCodeMixin from apollo_utils.service.schemas.mixins.date import DateRangeMixin from apollo_utils.service.schemas.mixins.isrc import get_isrc_list_mixin from marshmallow import fields, validate from server.constants.delphi.tiktok import TiktokTrackAnalyticsBreakdown, TikTokTrackAnalyticsExpand, \ TiktokTrackAnalyticsMetric from server.schemas.delphi.mixins.content_type import ContentTypeListMixin class DelphiTiktokTracksAnalyticsV3RequestSchema( get_isrc_list_mixin(), DateRangeMixin, ContentTypeListMixin, DelphiCountryCodeMixin, RequestSchema ): breakdowns_list = SplitUniqueListField( fields.String(validate=validate.OneOf(TiktokTrackAnalyticsBreakdown.ALL_FIELDS)), data_key="breakdowns" ) metrics_list = SplitUniqueListField( fields.String(validate=validate.OneOf(TiktokTrackAnalyticsMetric.ALL_FIELDS)), data_key="metrics" ) expands_list = SplitUniqueListField( fields.String(validate=validate.OneOf(TikTokTrackAnalyticsExpand.ALL_FIELDS)), data_key="expand_to" )