from apollo_utils.service.schemas.fields.datetime import DateStringField from apollo_utils.service.schemas.mixins.isrc import IsrcListRequiredMixin from apollo_utils.service.schemas.mixins.market import MarketDefaultGlobalMixin from marshmallow import fields, validate from server.schemas.base.schemas import RequestSchema, Schema class StationsSummary: class Request(RequestSchema, IsrcListRequiredMixin, MarketDefaultGlobalMixin): """Request schema to get radio stations summary stats.""" min_streams = fields.Int(required=False, missing=None, data_key="min", validate=validate.Range(min=0)) class Response(Schema): """Response stations bulk schema.""" class StationsSummaryItem(Schema): """Single station streams output schema.""" id = fields.Str(required=True) data = fields.Dict(required=False, default=None) markets = fields.List(fields.Raw(), default=[]) total = fields.List(fields.Int(), default=[]) items = fields.List(fields.Nested(StationsSummaryItem), default=[]) last_date = DateStringField()