from rest_framework import serializers
from django.contrib.auth.models import User
from .models import Source, ApiKey, Submission, SubmissionFile

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'username', 'email']

class SourceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Source
        fields = ['id', 'name', 'created_at']

class ApiKeySerializer(serializers.ModelSerializer):
    source_name = serializers.ReadOnlyField(source='source.name')
    
    class Meta:
        model = ApiKey
        fields = ['id', 'key', 'source', 'source_name', 'label', 'created_at', 'is_active']
        read_only_fields = ['key', 'created_at']

class SubmissionFileSerializer(serializers.ModelSerializer):
    class Meta:
        model = SubmissionFile
        fields = ['id', 'file', 'filename', 'created_at']

class SubmissionSerializer(serializers.ModelSerializer):
    source_name = serializers.ReadOnlyField(source='source.name')
    files = SubmissionFileSerializer(many=True, read_only=True)

    class Meta:
        model = Submission
        fields = ['id', 'source', 'source_name', 'medium', 'context', 'created_at', 'status', 'remark', 'files']
        read_only_fields = ['created_at']
