from rest_framework import serializers

from .models import Video, Playlist, Category, TagToObject


class TagToObjectSerializer(serializers.ModelSerializer):
    id = serializers.CharField(source='tag.id')
    name = serializers.CharField(source='tag.name')

    class Meta:
        model = TagToObject
        fields = ['id', 'name']


class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = ['id', 'name']


class VideoSerializer(serializers.ModelSerializer):
    categories = CategorySerializer(many=True)
    tags = TagToObjectSerializer(many=True)

    class Meta:
        model = Video
        fields = [
            'id',
            'title',
            'slug',
            'description',
            's3_file',
            'thumbnail',
            'categories',
            'tags',
        ]


class PlaylistSerializer(serializers.ModelSerializer):
    videos = VideoSerializer(many=True)
    tags = TagToObjectSerializer(many=True)

    class Meta:
        model = Playlist
        fields = [
            'id',
            'title',
            'description',
            'sort',
            'type',
            'mrss',
            'json',
            'videos',
            'tags',
        ]