from rest_framework import serializers

from .models import ChatMessage, ChatSession


class ChatMessageSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChatMessage
        fields = ["id", "session", "role", "content", "tool_calls", "created_at"]
        read_only_fields = ["id", "session", "role", "tool_calls", "created_at"]


class ChatSessionSerializer(serializers.ModelSerializer):
    preview = serializers.SerializerMethodField()

    class Meta:
        model = ChatSession
        fields = ["id", "user", "title", "preview", "is_archived", "created_at", "updated_at"]
        read_only_fields = ["id", "user", "created_at", "updated_at"]

    def get_preview(self, obj) -> str:
        last = obj.last_message[0] if getattr(obj, "last_message", None) else None
        return (last.content[:140] if last else "")
