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


class CommentCreate(BaseModel):
    content: str = Field(..., min_length=1, max_length=5000, strip_whitespace=True)
    parent_id: Optional[UUID] = None


class CommentUpdate(BaseModel):
    content: str = Field(..., min_length=1, max_length=5000, strip_whitespace=True)


class CommentResponse(BaseModel):
    id: UUID
    stream_id: UUID
    user_id: UUID
    username: str
    content: str
    created_at: datetime
    updated_at: datetime
    parent_id: Optional[UUID]

    class Config:
        from_attributes = True
