WIP checkpoint: Trust & Safety: Moderation data model + Alembic migration

This commit is contained in:
2026-08-18 18:38:20 +00:00
parent ae498ce4cb
commit 57135fc859
3 changed files with 73 additions and 1 deletions
+35
View File
@@ -0,0 +1,35 @@
from datetime import datetime
from typing import Optional
from sqlalchemy import Column, Enum, ForeignKey, Integer, String, Text, DateTime
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.database import Base
class ModerationAction(Base):
__tablename__ = "moderation_actions"
id = Column(Integer, primary_key=True)
moderator_id = Column(Integer, ForeignKey("users.id"), nullable=False)
target_user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
target_type = Column(
Enum("user", "world", "asset", "chat_message", name="target_type_enum"),
nullable=False,
)
target_id = Column(String(64), nullable=False)
action = Column(
Enum("warn", "suspend", "ban", "restrict", "remove", "restore", name="action_enum"),
nullable=False,
)
reason = Column(Text, nullable=True)
report_id = Column(Integer, ForeignKey("reports.id"), nullable=True)
expires_at = Column(DateTime(timezone=True), nullable=True)
revoked_at = Column(DateTime(timezone=True), nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Relationships
moderator = relationship("User", foreign_keys=[moderator_id])
target_user = relationship("User", foreign_keys=[target_user_id])
report = relationship("Report", back_populates="moderation_actions")