from rest_framework import serializers from .models import Bookmark, Highlight, ReadingProgress class BookmarkSerializer(serializers.ModelSerializer[Bookmark]): class Meta: model = Bookmark fields = ["id", "document", "page", "label", "created_at"] read_only_fields = ["id", "created_at"] class HighlightSerializer(serializers.ModelSerializer[Highlight]): class Meta: model = Highlight fields = ["id", "document", "page", "color", "text", "note", "created_at"] read_only_fields = ["id", "created_at"] class ReadingProgressSerializer(serializers.ModelSerializer[ReadingProgress]): class Meta: model = ReadingProgress fields = ["id", "document", "current_page", "total_pages", "percentage", "last_read_at"] read_only_fields = ["id", "percentage", "last_read_at"] class ReadingProgressUpdateSerializer(serializers.ModelSerializer[ReadingProgress]): class Meta: model = ReadingProgress fields = ["current_page", "total_pages"] def validate_current_page(self, value: int) -> int: if value < 1: raise serializers.ValidationError("Page must be at least 1.") return value