from datetime import datetime
from typing import Literal, Optional
from uuid import UUID
from pydantic import BaseModel, Field


class SupportingDataCreate(BaseModel):
    label: str = Field(..., min_length=1, max_length=255)
    data_type: Literal["text_snippet", "screenshot"]
    content: str = Field(..., min_length=1, max_length=5_000_000)
    content_type: Optional[str] = Field(None, max_length=50)


class SupportingDataUpdate(BaseModel):
    label: Optional[str] = Field(None, min_length=1, max_length=255)
    content: Optional[str] = Field(None, min_length=1)


class SupportingDataResponse(BaseModel):
    id: UUID
    session_id: UUID
    label: str
    data_type: str
    content: str
    content_type: Optional[str]
    sort_order: int
    created_at: datetime
    updated_at: datetime

    model_config = {"from_attributes": True}
