"""Report model for Trust & Safety.""" from sqlalchemy import ( Column, Integer, String, Text, DateTime, ForeignKey, Enum as SAEnum, ) from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.database import Base class Report(Base): __tablename__ = "reports" id = Column(Integer, primary_key=True) reporter_id = Column(Integer, ForeignKey("users.id"), nullable=False) target_type = SAEnum("user", "world", "asset", "chat_message", name="target_type_enum", nullable=False) target_id = Column(String(64), nullable=False) reason_category = SAEnum( "harassment", "hate_speech", "sexual_content", "violence", "spam", "self_harm", "other", name="reason_category_enum", nullable=False, ) details = Column(Text, nullable=True) status = SAEnum( "open", "in_review", "resolved", "dismissed", name="report_status_enum", default="open", nullable=False, ) resolved_by = Column(Integer, ForeignKey("users.id"), nullable=True) resolution = SAEnum( "action_taken", "action_not_needed", "duplicate", name="resolution_enum", nullable=True, ) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) resolved_at = Column(DateTime(timezone=True), nullable=True) # Relationships reporter = relationship("User", foreign_keys=[reporter_id]) resolved_by_user = relationship("User", foreign_keys=[resolved_by])