"""Extend musehub_pack_index to cover commits and snapshots. Renames: object_id → entity_id pack_id → mpack_id Adds: entity_type VARCHAR(16) NOT NULL — "object", "commit", or "snapshot" Backfills existing rows with entity_type = 'object'. Renames index ix_musehub_pack_index_object_id → ix_musehub_pack_index_entity_id. """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "0063" down_revision = "0062" branch_labels = None depends_on = None def upgrade() -> None: op.drop_index("ix_musehub_pack_index_object_id", table_name="musehub_pack_index") with op.batch_alter_table("musehub_pack_index") as batch_op: batch_op.alter_column("object_id", new_column_name="entity_id") batch_op.alter_column("pack_id", new_column_name="mpack_id") batch_op.add_column( sa.Column( "entity_type", sa.String(16), nullable=False, server_default="object", ) ) op.execute("UPDATE musehub_pack_index SET entity_type = 'object'") op.create_index( "ix_musehub_pack_index_entity_id", "musehub_pack_index", ["entity_id"], ) def downgrade() -> None: op.drop_index("ix_musehub_pack_index_entity_id", table_name="musehub_pack_index") with op.batch_alter_table("musehub_pack_index") as batch_op: batch_op.drop_column("entity_type") batch_op.alter_column("mpack_id", new_column_name="pack_id") batch_op.alter_column("entity_id", new_column_name="object_id") op.create_index( "ix_musehub_pack_index_object_id", "musehub_pack_index", ["object_id"], )