WIP checkpoint: Group + membership models + migration

This commit is contained in:
2026-08-18 18:25:19 +00:00
parent 78294d3be2
commit 00a2b96947
+9 -14
View File
@@ -19,16 +19,16 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None: def upgrade() -> None:
"""Upgrade database schema.""" """Upgrade database schema."""
# Create ENUM types # Create ENUM types (create once, reuse below)
world_visibility = postgresql.ENUM( world_visibility_enum = postgresql.ENUM(
"public", "private", "friends_only", name="world_visibility" "public", "private", "friends_only", name="world_visibility"
) )
world_visibility.create(op.get_bind(), checkfirst=True) world_visibility_enum.create(op.get_bind(), checkfirst=True)
asset_type = postgresql.ENUM( asset_type_enum = postgresql.ENUM(
"image", "audio", "video", "document", "model_3d", "other", name="asset_type" "image", "audio", "video", "document", "model_3d", "other", name="asset_type"
) )
asset_type.create(op.get_bind(), checkfirst=True) asset_type_enum.create(op.get_bind(), checkfirst=True)
# Create users table # Create users table
op.create_table( op.create_table(
@@ -59,7 +59,7 @@ def upgrade() -> None:
) )
op.create_index(op.f("ix_sessions_token"), "sessions", ["token"], unique=True) op.create_index(op.f("ix_sessions_token"), "sessions", ["token"], unique=True)
# Create worlds table # Create worlds table — reuse world_visibility_enum (no second create)
op.create_table( op.create_table(
"worlds", "worlds",
sa.Column("id", sa.Integer(), primary_key=True), sa.Column("id", sa.Integer(), primary_key=True),
@@ -68,9 +68,7 @@ def upgrade() -> None:
sa.Column("owner_id", sa.Integer(), nullable=False), sa.Column("owner_id", sa.Integer(), nullable=False),
sa.Column( sa.Column(
"visibility", "visibility",
postgresql.ENUM( world_visibility_enum,
"public", "private", "friends_only", name="world_visibility"
),
nullable=True, nullable=True,
), ),
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()),
@@ -79,7 +77,7 @@ def upgrade() -> None:
) )
op.create_index(op.f("ix_worlds_id"), "worlds", ["id"], unique=False) op.create_index(op.f("ix_worlds_id"), "worlds", ["id"], unique=False)
# Create assets table # Create assets table — reuse asset_type_enum (no second create)
op.create_table( op.create_table(
"assets", "assets",
sa.Column("id", sa.Integer(), primary_key=True), sa.Column("id", sa.Integer(), primary_key=True),
@@ -87,10 +85,7 @@ def upgrade() -> None:
sa.Column("description", sa.Text(), nullable=True), sa.Column("description", sa.Text(), nullable=True),
sa.Column( sa.Column(
"asset_type", "asset_type",
postgresql.ENUM( asset_type_enum,
"image", "audio", "video", "document", "model_3d", "other",
name="asset_type",
),
nullable=False, nullable=False,
), ),
sa.Column("file_path", sa.String(length=512), nullable=False), sa.Column("file_path", sa.String(length=512), nullable=False),