"""flow_proposal l1 source linkage Revision ID: 1fd88a68b145 Revises: cb9e282267d2 Create Date: 2026-05-29 19:33:09.188681 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision: str = '1fd88a68b145' down_revision: Union[str, None] = 'cb9e282267d2' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column( "flow_proposals", sa.Column("l1_session_id", postgresql.UUID(as_uuid=True), nullable=True), ) op.create_index( "ix_flow_proposals_l1_session_id", "flow_proposals", ["l1_session_id"], ) op.create_foreign_key( "fk_flow_proposals_l1_session_id", "flow_proposals", "l1_walk_sessions", ["l1_session_id"], ["id"], ondelete="SET NULL", ) op.alter_column("flow_proposals", "source_session_id", nullable=True) op.create_check_constraint( "ck_flow_proposals_exactly_one_source", "flow_proposals", "(source_session_id IS NOT NULL) <> (l1_session_id IS NOT NULL)", ) def downgrade() -> None: op.drop_constraint( "ck_flow_proposals_exactly_one_source", "flow_proposals", type_="check", ) op.alter_column("flow_proposals", "source_session_id", nullable=False) op.drop_constraint( "fk_flow_proposals_l1_session_id", "flow_proposals", type_="foreignkey", ) op.drop_index("ix_flow_proposals_l1_session_id", "flow_proposals") op.drop_column("flow_proposals", "l1_session_id")