"""202603131647

Revision ID: 12114b3e953c
Revises: cd3a402c2f6c
Create Date: 2026-03-13 08:47:30.455956

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy import text


# revision identifiers, used by Alembic.
revision: str = '12114b3e953c'
down_revision: Union[str, None] = 'ef9d172cb753'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None

def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    conn = op.get_bind()
    print("Step 1: 添加 workspace_id 列...")
    op.add_column('end_users', sa.Column('workspace_id', sa.UUID(), nullable=True))
    print("Step 2: 回填 workspace_id...")
    conn.execute(text("""
            UPDATE end_users 
            SET workspace_id = apps.workspace_id
            FROM apps
            WHERE end_users.app_id = apps.id
        """))
    # Step 3: 设置 workspace_id 为 NOT NULL
    print("Step 3: 设置 workspace_id 为 NOT NULL...")
    op.alter_column('end_users', 'workspace_id', nullable=False)
    op.alter_column('end_users', 'app_id', existing_type=sa.UUID(), nullable=True)
    # Step 4: 添加外键约束
    print("Step 4: 添加外键约束...")
    op.create_foreign_key('fk_end_users_workspace_id','end_users', 'workspaces',
        ['workspace_id'], ['id']
    )
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_constraint('fk_end_users_workspace_id', 'end_users', type_='foreignkey')
    op.alter_column('end_users', 'app_id', existing_type=sa.UUID(), nullable=False)
    op.drop_column('end_users', 'workspace_id')
    # ### end Alembic commands ###
