37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""add booking performance indexes
|
|
|
|
Revision ID: c1e4b8f2a7d9
|
|
Revises: a4d9c7e18b21
|
|
Create Date: 2026-04-08 14:00:00.000000
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
|
|
revision: str = 'c1e4b8f2a7d9'
|
|
down_revision: Union[str, None] = 'a4d9c7e18b21'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Speed up filtering bookings by status (most common admin query filter)
|
|
op.create_index('ix_bookings_status', 'bookings', ['status'])
|
|
|
|
# Speed up date-range queries and ordering used by the schedule view
|
|
op.create_index('ix_bookings_requested_date', 'bookings', ['requested_date'])
|
|
|
|
# Speed up the SSE signature query: max(updated_at) table scan → index scan
|
|
op.create_index('ix_bookings_updated_at', 'bookings', ['updated_at'])
|
|
|
|
# Composite: member + status used by member-facing /members/bookings endpoint
|
|
op.create_index('ix_bookings_member_id_status', 'bookings', ['member_id', 'status'])
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index('ix_bookings_member_id_status', table_name='bookings')
|
|
op.drop_index('ix_bookings_updated_at', table_name='bookings')
|
|
op.drop_index('ix_bookings_requested_date', table_name='bookings')
|
|
op.drop_index('ix_bookings_status', table_name='bookings')
|