from apollo_utils.service.schemas.fields.datetime import DateTimeStringField from marshmallow import fields from server.schemas.base.schemas import Schema class FiltrPaginationResponse(Schema): """Pagination data for filtr response.""" limit = fields.Integer() offset = fields.Integer() total = fields.Integer() class FiltrOwnerResponse(Schema): """Response for filtr playlists owner.""" accountId = fields.String() accountName = fields.String() categoryId = fields.Integer() categoryName = fields.String() marketCode = fields.String() class FiltrPlaylistResponse(Schema): """Response for filtr playlists.""" class Streams(Schema): local1Day = fields.Integer() local7Days = fields.Integer() global1Day = fields.Integer() global7Days = fields.Integer() isrc = fields.Str() added = DateTimeStringField() countryCode = fields.String() earliestAdded = DateTimeStringField() globalStreams14Days = fields.Integer() globalStreams28Days = fields.Integer() globalStreams56Days = fields.Integer() globalStreams7Days = fields.Integer() globalStreamsLatest = fields.Integer() globalUsers14Days = fields.Integer() globalUsers28Days = fields.Integer() globalUsers56Days = fields.Integer() globalUsers7Days = fields.Integer() globalUsersLatest = fields.Integer() imageFileName = fields.String() localStreams14Days = fields.Integer() localStreams28Days = fields.Integer() localStreams56Days = fields.Integer() localStreams7Days = fields.Integer() localStreamsLatest = fields.Integer() localStreamsPerUser14Days = fields.Float() localStreamsPerUser28Days = fields.Float() localStreamsPerUser56Days = fields.Float() localStreamsPerUser7Days = fields.Float() localStreamsPerUserLatest = fields.Float() localUsers14Days = fields.Integer() localUsers28Days = fields.Integer() localUsers56Days = fields.Integer() localUsers7Days = fields.Integer() localUsersLatest = fields.Integer() marketStreams14Days = fields.Integer() marketStreams28Days = fields.Integer() marketStreams56Days = fields.Integer() marketStreams7Days = fields.Integer() marketStreamsLatest = fields.Integer() marketUsers14Days = fields.Integer() marketUsers28Days = fields.Integer() marketUsers56Days = fields.Integer() marketUsers7Days = fields.Integer() marketUsersLatest = fields.Integer() name = fields.String() owner = fields.Nested(FiltrOwnerResponse) position = fields.Integer() positionChange = fields.Integer() positionChangeDate = DateTimeStringField() public = fields.Boolean() spotifyLink = fields.String() streamDaysInPeriod14Day = fields.Integer() streamDaysInPeriod28Day = fields.Integer() streamDaysInPeriod56Day = fields.Integer() streamDaysInPeriod7Day = fields.Integer() subscribers = fields.Integer() subscribers14Days = fields.Integer() subscribers1Day = fields.Integer() subscribers28Days = fields.Integer() subscribers56Days = fields.Integer() subscribers7Days = fields.Integer() trackCount = fields.Integer() tracksLastAdded = DateTimeStringField() streams = fields.Nested(Streams) class FiltrHistoricalPlaylistResponse(Schema): """Response for filtr playlists with track historical playlist.""" buzzCategoryId = fields.Integer() countryCode = fields.String() description = fields.String() imageFileName = fields.String() name = fields.String() spotifyLink = fields.String() subscribers = fields.Integer()