import uuid from datetime import datetime from pydantic import BaseModel, ConfigDict from app.models.enums import TreeVisibility class TreeCreate(BaseModel): name: str description: str | None = None visibility: TreeVisibility = TreeVisibility.private class TreeUpdate(BaseModel): name: str | None = None description: str | None = None visibility: TreeVisibility | None = None home_person_id: uuid.UUID | None = None class TreeRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID name: str description: str | None visibility: TreeVisibility owner_id: uuid.UUID home_person_id: uuid.UUID | None = None created_at: datetime class PublicTreeRead(BaseModel): """Tree projection for the public surface — deliberately omits owner_id so a public/unlisted tree doesn't reveal which account owns it.""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID name: str description: str | None visibility: TreeVisibility home_person_id: uuid.UUID | None = None