from typing import Optional, List, Any
from datetime import datetime
from uuid import UUID
from pydantic import BaseModel


class TributeResponse(BaseModel):
    id: UUID
    memorial_id: UUID
    submitter_name: str
    submitter_email: Optional[str] = None
    relationship: Optional[str] = None
    message: str
    photo_url: Optional[str] = None
    status: str
    submitted_at: datetime
    moderated_at: Optional[datetime] = None

    model_config = {"from_attributes": True}


class MemorialSummaryResponse(BaseModel):
    id: UUID
    record_id: UUID
    slug: str
    biography_text: Optional[str] = None
    video_url: Optional[str] = None
    visibility_config: Optional[Any] = None
    is_published: bool
    published_at: Optional[datetime] = None
    created_at: datetime
    updated_at: datetime

    model_config = {"from_attributes": True}


class MemorialResponse(MemorialSummaryResponse):
    tributes: List[TributeResponse] = []
