import uuid from sqlalchemy import Column, String, Text, DateTime, ForeignKey from sqlalchemy.sql import func from sqlalchemy.orm import relationship from app.core.database import Base class Blocker(Base): __tablename__ = "pjctrl_blockers" id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) task_id = Column(String(36), ForeignKey("pjctrl_tasks.id", ondelete="CASCADE"), nullable=False) reported_by = Column(String(36), ForeignKey("pjctrl_users.id"), nullable=False) reason = Column(Text, nullable=False) resolved_by = Column(String(36), ForeignKey("pjctrl_users.id"), nullable=True) resolution_note = Column(Text, nullable=True) created_at = Column(DateTime, server_default=func.now(), nullable=False) resolved_at = Column(DateTime, nullable=True) # Relationships task = relationship("Task", back_populates="blockers") reporter = relationship("User", foreign_keys=[reported_by], back_populates="reported_blockers") resolver = relationship("User", foreign_keys=[resolved_by], back_populates="resolved_blockers")