"""add_composite_indexes Revision ID: b76c725fc3cf Revises: 2d0fcec3b06d Create Date: 2025-10-30 16:41:33.273135 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision: str = 'b76c725fc3cf' down_revision: Union[str, None] = '2d0fcec3b06d' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # Add composite indexes for common query patterns # Composite index for filtering active users by role op.create_index( 'ix_users_active_superuser', 'users', ['is_active', 'is_superuser'], postgresql_where=sa.text('deleted_at IS NULL') ) # Composite index for sorting active users by creation date op.create_index( 'ix_users_active_created', 'users', ['is_active', 'created_at'], postgresql_where=sa.text('deleted_at IS NULL') ) # Composite index for email lookup of non-deleted users op.create_index( 'ix_users_email_not_deleted', 'users', ['email', 'deleted_at'] ) def downgrade() -> None: # Remove composite indexes op.drop_index('ix_users_email_not_deleted', table_name='users') op.drop_index('ix_users_active_created', table_name='users') op.drop_index('ix_users_active_superuser', table_name='users')