"""Comment model for board comments.""" import uuid from datetime import datetime from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String, Text from sqlalchemy.dialects.postgresql import JSONB, UUID from sqlalchemy.orm import relationship from app.database.base import Base class Comment(Base): """Comment model for 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, index=True) share_link_id = Column( UUID(as_uuid=True), ForeignKey("share_links.id", ondelete="SET NULL"), nullable=True, index=True ) author_name = Column(String(100), nullable=False) content = Column(Text, nullable=False) position = Column(JSONB, nullable=True) # Optional canvas position created_at = Column(DateTime, nullable=False, default=datetime.utcnow) 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""