"""Schema for sound recording metadata.""" from marshmallow import fields from sound_recordings.schemas import fields as custom_fields from sound_recordings.schemas.common import BaseSchema class ArtistSchema(BaseSchema): """Marshmallow schema for artist.""" artist_name = fields.String() artist_type = fields.String(data_key="artist_type", attribute="type") class ProductMetadataSchema(BaseSchema): """Marshmallow schema for sound-recording-product metadata.""" product_id = fields.String() release_name = fields.String(data_key="product_name") release_date = custom_fields.UnifiedDate() release_format = fields.String(data_key="format") release_version = fields.String(data_key="version") sales_start_date = custom_fields.UnifiedDate(data_key="sale_start_date") artists = fields.Nested(ArtistSchema, many=True, data_key="primary_artists") release_id = fields.String(data_key="upc") subaccount_id = fields.String() subaccount_name = fields.String() is_deleted = fields.Boolean() class SoundRecordingMetadataSchema(BaseSchema): """Marshmallow for sound recording metadata.""" isrc = fields.String() track_name = fields.String(data_key="name") artist_name = fields.String() artists = fields.Nested(ArtistSchema, data_key="primary_artists", many=True) products = fields.Nested(ProductMetadataSchema, many=True)