"""
shared/serializers/base.py
============================
Serializers base reutilizables para toda la API.
Evitan repetir configuración común en cada serializer.
"""

from rest_framework import serializers


class ReadOnlyModelSerializer(serializers.ModelSerializer):
    """
    Serializer de solo lectura.
    Útil para endpoints de consulta donde NUNCA se escribe.
    Hace explícita la intención: este serializer es para leer, no para crear/editar.
    """

    def create(self, validated_data):
        raise NotImplementedError('Este serializer es de solo lectura.')

    def update(self, instance, validated_data):
        raise NotImplementedError('Este serializer es de solo lectura.')


class TimestampedSerializer(serializers.ModelSerializer):
    """
    Serializer base que incluye los campos de timestamp.
    Todos los serializers de modelos que hereden de TimestampedModel
    deben heredar de este para tener created_at y updated_at disponibles.
    """
    created_at = serializers.DateTimeField(read_only=True)
    updated_at = serializers.DateTimeField(read_only=True)
