import uuid from sqlalchemy import Column, String, Text, Boolean, DateTime, ForeignKey, Enum from sqlalchemy.sql import func from sqlalchemy.orm import relationship from app.core.database import Base import enum class NotificationType(str, enum.Enum): MENTION = "mention" ASSIGNMENT = "assignment" BLOCKER = "blocker" STATUS_CHANGE = "status_change" COMMENT = "comment" BLOCKER_RESOLVED = "blocker_resolved" class Notification(Base): __tablename__ = "pjctrl_notifications" id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) user_id = Column(String(36), ForeignKey("pjctrl_users.id", ondelete="CASCADE"), nullable=False) type = Column( Enum("mention", "assignment", "blocker", "status_change", "comment", "blocker_resolved", name="notification_type_enum"), nullable=False ) reference_type = Column(String(50), nullable=False) reference_id = Column(String(36), nullable=False) title = Column(String(200), nullable=False) message = Column(Text, nullable=True) is_read = Column(Boolean, default=False, nullable=False) created_at = Column(DateTime, server_default=func.now(), nullable=False) read_at = Column(DateTime, nullable=True) # Relationships user = relationship("User", back_populates="notifications")