"""Schemas for top metrics endpoint.""" from marshmallow import fields from analytics.schemas.common import BaseSchema, SourceSchema class TopSoundRecordingFamilyItemSchema(BaseSchema): """Marshmallow schema for a items in a list of top sound recording families.""" prod_fam_no = fields.Integer(data_key="product_family_id") main_isrc = fields.String() related_isrcs = fields.List(fields.String) streams_1_day = fields.Integer() streams_7_days = fields.Integer() streams_28_days = fields.Integer() streams_183_days = fields.Integer() streams_365_days = fields.Integer() streams_all_time = fields.Integer() streams_1_day_prev = fields.Integer() streams_7_days_prev = fields.Integer() streams_28_days_prev = fields.Integer() streams_183_days_prev = fields.Integer() streams_365_days_prev = fields.Integer() growth_percentage_1_day = fields.Float(data_key="growth_percentage_1_day") growth_percentage_7_days = fields.Float(data_key="growth_percentage_7_days") growth_percentage_28_days = fields.Float(data_key="growth_percentage_28_days") growth_percentage_183_days = fields.Float(data_key="growth_percentage_183_days") growth_percentage_365_days = fields.Float(data_key="growth_percentage_365_days") top5_tiktok_scores_by_country = fields.List(fields.Dict(allow_none=True)) views_1_day = fields.Integer() views_7_days = fields.Integer() views_28_days = fields.Integer() views_all_time = fields.Integer() views_1_day_prev = fields.Integer() views_7_days_prev = fields.Integer() views_28_days_prev = fields.Integer() creations_1_day = fields.Integer() creations_7_days = fields.Integer() creations_28_days = fields.Integer() creations_all_time = fields.Integer() creations_1_day_prev = fields.Integer() creations_7_days_prev = fields.Integer() creations_28_days_prev = fields.Integer() views_growth_percentage_1_day = fields.Float( data_key="views_growth_percentage_1_day" ) views_growth_percentage_7_days = fields.Float( data_key="views_growth_percentage_7_days" ) views_growth_percentage_28_days = fields.Float( data_key="views_growth_percentage_28_days" ) creations_growth_percentage_1_day = fields.Float( data_key="creations_growth_percentage_1_day" ) creations_growth_percentage_7_days = fields.Float( data_key="creations_growth_percentage_7_days" ) creations_growth_percentage_28_days = fields.Float( data_key="creations_growth_percentage_28_days" ) class TopSoundRecordingFamiliesSchema(BaseSchema): """Marshmallow schema for the list of top metrics.""" total_results = fields.Integer() items = fields.Nested(TopSoundRecordingFamilyItemSchema, many=True) sources = fields.Nested(SourceSchema, many=True)