"""Appeal model for moderation actions.""" from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.database import Base class Appeal(Base): __tablename__ = "appeals" id = Column(Integer, primary_key=True) moderation_action_id = Column( Integer, ForeignKey("moderation_actions.id"), nullable=False ) user_id = Column(Integer, ForeignKey("users.id"), nullable=False) reason = Column(Text, nullable=False) status = Column( Enum( "pending", "approved", "rejected", name="appeal_status_enum", ), default="pending", nullable=False, ) reviewed_by = Column(Integer, ForeignKey("users.id"), nullable=True) reviewed_at = Column(DateTime(timezone=True), nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) # Relationships moderation_action = relationship("ModerationAction", back_populates="appeals") user = relationship("User", back_populates="appeals") reviewer = relationship("User", foreign_keys=[reviewed_by])