fix: add compose indexes to version tables, per upstream changes

as of SQLAlchemy-Continuum v1.6.0

https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/releases/tag/1.6.0

but these changes should be safe to add for older sqlalchemy-continuum
as well
This commit is contained in:
Lance Edgar 2026-02-01 18:25:32 -06:00
parent e7d6a10751
commit 665a9684af

View file

@ -0,0 +1,106 @@
"""add composite indexes per upstream changes
Revision ID: f51330d1fa4d
Revises: 46fb4711411d
Create Date: 2026-02-01 18:24:25.713961
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
import wuttjamaican.db.util
# revision identifiers, used by Alembic.
revision: str = "f51330d1fa4d"
down_revision: Union[str, None] = "46fb4711411d"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# *_version
op.create_index(
"ix_permission_version_pk_transaction_id",
"permission_version",
["role_uuid", "permission", sa.literal_column("transaction_id DESC")],
unique=False,
)
op.create_index(
"ix_permission_version_pk_validity",
"permission_version",
["role_uuid", "permission", "transaction_id", "end_transaction_id"],
unique=False,
)
op.create_index(
"ix_person_version_pk_transaction_id",
"person_version",
["uuid", sa.literal_column("transaction_id DESC")],
unique=False,
)
op.create_index(
"ix_person_version_pk_validity",
"person_version",
["uuid", "transaction_id", "end_transaction_id"],
unique=False,
)
op.create_index(
"ix_role_version_pk_transaction_id",
"role_version",
["uuid", sa.literal_column("transaction_id DESC")],
unique=False,
)
op.create_index(
"ix_role_version_pk_validity",
"role_version",
["uuid", "transaction_id", "end_transaction_id"],
unique=False,
)
op.create_index(
"ix_user_version_pk_transaction_id",
"user_version",
["uuid", sa.literal_column("transaction_id DESC")],
unique=False,
)
op.create_index(
"ix_user_version_pk_validity",
"user_version",
["uuid", "transaction_id", "end_transaction_id"],
unique=False,
)
op.create_index(
"ix_user_x_role_version_pk_transaction_id",
"user_x_role_version",
["uuid", sa.literal_column("transaction_id DESC")],
unique=False,
)
op.create_index(
"ix_user_x_role_version_pk_validity",
"user_x_role_version",
["uuid", "transaction_id", "end_transaction_id"],
unique=False,
)
def downgrade() -> None:
# *_version
op.drop_index(
"ix_user_x_role_version_pk_validity", table_name="user_x_role_version"
)
op.drop_index(
"ix_user_x_role_version_pk_transaction_id", table_name="user_x_role_version"
)
op.drop_index("ix_user_version_pk_validity", table_name="user_version")
op.drop_index("ix_user_version_pk_transaction_id", table_name="user_version")
op.drop_index("ix_role_version_pk_validity", table_name="role_version")
op.drop_index("ix_role_version_pk_transaction_id", table_name="role_version")
op.drop_index("ix_person_version_pk_validity", table_name="person_version")
op.drop_index("ix_person_version_pk_transaction_id", table_name="person_version")
op.drop_index("ix_permission_version_pk_validity", table_name="permission_version")
op.drop_index(
"ix_permission_version_pk_transaction_id", table_name="permission_version"
)