"""Schemas for top metrics endpoint.""" from marshmallow import fields from analytics.schemas.common import BaseSchema, SourceSchema class TopMetricsItemSchema(BaseSchema): """Marshmallow schema for a items in a list of top metrics.""" isrc = fields.String() streams_1_day = fields.Integer() streams_1_day_prev = fields.Integer() streams_7_days = fields.Integer() streams_7_days_prev = fields.Integer() streams_28_days = fields.Integer() streams_28_days_prev = fields.Integer() streams_183_days = fields.Integer() streams_183_days_prev = fields.Integer() streams_365_days = fields.Integer() streams_365_days_prev = fields.Integer() streams_all_time = fields.Integer() growth_percentage_1_day = fields.Float(data_key="growth_percentage_1_day") streams_1_day_absolute_change = fields.Integer( data_key="streams_1_day_absolute_change" ) growth_percentage_7_days = fields.Float(data_key="growth_percentage_7_days") streams_7_days_absolute_change = fields.Integer( data_key="streams_7_days_absolute_change" ) growth_percentage_28_days = fields.Float(data_key="growth_percentage_28_days") streams_28_days_absolute_change = fields.Integer( data_key="streams_28_days_absolute_change" ) growth_percentage_183_days = fields.Float(data_key="growth_percentage_183_days") streams_183_days_absolute_change = fields.Integer( data_key="streams_183_days_absolute_change" ) growth_percentage_365_days = fields.Float(data_key="growth_percentage_365_days") streams_365_days_absolute_change = fields.Integer( data_key="streams_365_days_absolute_change" ) active_discovery_streams_7_days = fields.Integer() active_discovery_streams_7_days_prev = fields.Integer() active_discovery_streams_growth_percentage_7_days = fields.Float( data_key="active_discovery_streams_growth_percentage_7_days" ) active_discovery_streams_7_days_absolute_change = fields.Integer( data_key="active_discovery_streams_7_days_absolute_change" ) active_discovery_streams_1_day = fields.Integer() active_discovery_streams_1_day_prev = fields.Integer() active_discovery_streams_growth_percentage_1_day = fields.Float( data_key="active_discovery_streams_growth_percentage_1_day" ) active_discovery_streams_1_day_absolute_change = fields.Integer( data_key="active_discovery_streams_1_day_absolute_change" ) views_1_day = fields.Integer() views_1_day_prev = fields.Integer() views_7_days = fields.Integer() views_7_days_prev = fields.Integer() views_28_days = fields.Integer() views_28_days_prev = fields.Integer() views_all_time = fields.Integer() creations_1_day = fields.Integer() creations_1_day_prev = fields.Integer() creations_7_days = fields.Integer() creations_7_days_prev = fields.Integer() creations_28_days = fields.Integer() creations_28_days_prev = fields.Integer() creations_all_time = fields.Integer() views_growth_percentage_1_day = fields.Float( data_key="views_growth_percentage_1_day" ) views_1_day_absolute_change = fields.Integer(data_key="views_1_day_absolute_change") views_growth_percentage_7_days = fields.Float( data_key="views_growth_percentage_7_days" ) views_7_days_absolute_change = fields.Integer( data_key="views_7_days_absolute_change" ) views_growth_percentage_28_days = fields.Float( data_key="views_growth_percentage_28_days" ) views_28_days_absolute_change = fields.Integer( data_key="views_28_days_absolute_change" ) creations_growth_percentage_1_day = fields.Float( data_key="creations_growth_percentage_1_day" ) creations_1_day_absolute_change = fields.Integer( data_key="creations_1_day_absolute_change" ) creations_growth_percentage_7_days = fields.Float( data_key="creations_growth_percentage_7_days" ) creations_7_days_absolute_change = fields.Integer( data_key="creations_7_days_absolute_change" ) creations_growth_percentage_28_days = fields.Float( data_key="creations_growth_percentage_28_days" ) creations_28_days_absolute_change = fields.Integer( data_key="creations_28_days_absolute_change" ) class TopMetricsSchema(BaseSchema): """Marshmallow schema for the list of top metrics.""" total_results = fields.Integer() items = fields.Nested(TopMetricsItemSchema, many=True) sources = fields.Nested(SourceSchema, many=True)