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

This commit is contained in:
2026-08-18 18:51:42 +00:00
parent 0ce85fd5f7
commit a2cc1dbe18
+6 -3
View File
@@ -1,7 +1,6 @@
from datetime import date
from typing import Optional
from sqlalchemy import Column, Integer, String, Boolean, DateTime, Date, Enum, Text, ForeignKey
from sqlalchemy import Boolean, Column, Date, DateTime, Enum, Integer, String
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
@@ -17,7 +16,10 @@ class User(Base):
hashed_password = Column(String(255), nullable=False)
date_of_birth = Column(Date, nullable=True)
is_active = Column(Boolean, default=True)
role = Column(Enum("user", "moderator", "admin", name="user_role", default="user"), default="user")
role = Column(
Enum("user", "moderator", "admin", name="user_role", default="user"),
default="user",
)
banned_until = Column(DateTime(timezone=True), nullable=True)
suspended_until = Column(DateTime(timezone=True), nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
@@ -26,6 +28,7 @@ class User(Base):
sessions = relationship("Session", back_populates="user", cascade="all, delete-orphan")
worlds = relationship("World", back_populates="owner")
assets = relationship("Asset", back_populates="owner")
appeals = relationship("Appeal", back_populates="user")
@property
def is_adult(self) -> bool: