"""Comment model for board annotations.""" import uuid from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String, Text, func from sqlalchemy.dialects.postgresql import JSONB, UUID from sqlalchemy.orm import relationship from app.database.base import Base class Comment(Base): """Comment model representing viewer comments on shared boards.""" __tablename__ = "comments" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) board_id = Column(UUID(as_uuid=True), ForeignKey("boards.id", ondelete="CASCADE"), nullable=False) share_link_id = Column(UUID(as_uuid=True), ForeignKey("share_links.id", ondelete="SET NULL"), nullable=True) author_name = Column(String(100), nullable=False) content = Column(Text, nullable=False) position = Column(JSONB, nullable=True) # Optional canvas position reference created_at = Column(DateTime, nullable=False, server_default=func.now()) is_deleted = Column(Boolean, nullable=False, default=False) # Relationships board = relationship("Board", back_populates="comments") share_link = relationship("ShareLink", back_populates="comments") def __repr__(self) -> str: return f""