"""Add optional concierge association to route details. Revision ID: 0023_detail_concierge_advisor Revises: 0022_opaque_ids """ from alembic import context, op import sqlalchemy as sa from sqlalchemy import inspect from app.migration_compat import baseline_column_names revision = "0023_detail_concierge_advisor" down_revision = "0022_opaque_ids" branch_labels = None depends_on = None def should_add_concierge_advisor_column(existing_columns: set[str]) -> bool: return "conciergeAdvisorId" not in existing_columns def is_offline_mode() -> bool: try: return context.is_offline_mode() except (NameError, AttributeError): return False def upgrade() -> None: if is_offline_mode(): should_add = "conciergeAdvisorId" not in baseline_column_names("DetailRecord") else: existing_columns = { column["name"] for column in inspect(op.get_bind()).get_columns("DetailRecord") } should_add = should_add_concierge_advisor_column(existing_columns) if should_add: op.add_column("DetailRecord", sa.Column("conciergeAdvisorId", sa.String(), nullable=True)) def downgrade() -> None: if is_offline_mode(): op.drop_column("DetailRecord", "conciergeAdvisorId") return existing_columns = { column["name"] for column in inspect(op.get_bind()).get_columns("DetailRecord") } if "conciergeAdvisorId" in existing_columns: op.drop_column("DetailRecord", "conciergeAdvisorId")