from rest_framework import serializers
from .models import ProductScrapeTask, ProductImage
from .models import User


class ProductImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductImage
        fields = [
            'id',
            'image_url',
            'task'
        ]

class ProductScrapeTaskSerializer(serializers.ModelSerializer):
    user_email = serializers.EmailField(source='user.email', read_only=True)
    result_file_url = serializers.SerializerMethodField()

    class Meta:
        model = ProductScrapeTask
        fields = [
            'id',
            'user_email',
            'search_params',
            'result_file_url',
            'status',
            'images_status',
            'message',
            'started_at',
            'completed_at',
        ]
        read_only_fields = ['id', 'user_email', 'status', 'started_at', 'completed_at']

    def get_result_file_url(self, obj):
        request = self.context.get('request')
        if obj.result_file and hasattr(obj.result_file, 'url'):
            return request.build_absolute_uri(obj.result_file.url) if request else obj.result_file.url
        return None
    
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'
