from __future__ import annotations import uuid from datetime import datetime from pydantic import BaseModel, ConfigDict class SongCommentCreate(BaseModel): body: str timestamp: float | None = None tag: str | None = None class SongCommentRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID song_id: uuid.UUID body: str author_id: uuid.UUID author_name: str author_avatar_url: str | None timestamp: float | None tag: str | None created_at: datetime @classmethod def from_model(cls, c: object) -> "SongCommentRead": return cls( id=getattr(c, "id"), song_id=getattr(c, "song_id"), body=getattr(c, "body"), author_id=getattr(c, "author_id"), author_name=getattr(getattr(c, "author"), "display_name"), author_avatar_url=getattr(getattr(c, "author"), "avatar_url"), timestamp=getattr(c, "timestamp"), tag=getattr(c, "tag", None), created_at=getattr(c, "created_at"), )