from playlist.models import Track
from rest_framework import serializers
from drf_spectacular.utils import extend_schema_serializer, OpenApiExample


@extend_schema_serializer(
    examples = [
         OpenApiExample(
            'Song with banter',
            value={
                "url": "http://127.0.0.1:8001/api/track/0AzD1FEuvkXP1verWfaZdv",
                "name": "Cbat",
                "explicit": False,
                "duration_ms": 171720,
                "popularity": 0,
                "banter": "Als je denkt dat \"Cbat\" van Hudson Mohawke de soundtrack is voor het onhandig manoeuvreren van een stelletje klunzen die elkaar constant in de weg zitten, dan heb je waarschijnlijk gelijk. Dit nummer, waarin de beats net zo chaotisch zijn als de liefdesperikelen van een tiener op een eerste date, is het perfecte liedje voor iedereen die zich ooit heeft afgevraagd hoe je een kat kunt imiteren zonder dat je daadwerkelijk een kat bent.",
                "banter_done": True,
                "old": False,
                "from_playlist": None,
                "nominated_by": "http://127.0.0.1:8001/api/user/1",
                "album": "http://127.0.0.1:8001/api/album/0d99LxnQpiPLgSGDRuU9HT",
                "artists": [
                    "http://127.0.0.1:8001/api/artist/6olWbKW2VLhFCHfOi0iEDb"
                ]
            }
        ),
        OpenApiExample(
           'Song from old playlist',
           description='While this track is from an old playlist, old is still set to False as it has been nominated again this year.',
           value={
                "url": "http://127.0.0.1:8001/api/track/4QGUlo1swUpXduW23JM57S",
                "name": "You Bring On The Sun",
                "explicit": False,
                "duration_ms": 215400,
                "popularity": 43,
                "banter": None,
                "banter_done": False,
                "old": False,
                "from_playlist": "HD Con 2020 A",
                "nominated_by": None,
                "album": "http://127.0.0.1:8001/api/album/01QglfxMtbN2EVEyGWpPyQ",
                "artists": [
                    "http://127.0.0.1:8001/api/artist/0gcMPgunYh4rX1UOdvZKBn"
                ]
            }
       ),
    ]
)
class TrackSerializer(serializers.HyperlinkedModelSerializer):
    artist = serializers.CharField()
    album_cover = serializers.CharField()

    class Meta:
        model = Track
        fields = '__all__'
        extra_kwargs = {
            'url': {'view_name': 'api-track', 'lookup_field': 'id'},
            'artists': {'view_name': 'api-artist', 'lookup_field': 'id'},
            'album': {'view_name': 'api-album', 'lookup_field': 'id'},
            'nominated_by': {'view_name': 'api-user', 'lookup_field': 'id'},
        }
