"""Add user_id FK to todos table. Revision ID: 027 Revises: 026 Create Date: 2026-02-26 """ from alembic import op import sqlalchemy as sa revision = "027" down_revision = "026" branch_labels = None depends_on = None def upgrade() -> None: op.add_column("todos", sa.Column("user_id", sa.Integer(), nullable=True)) op.execute( "UPDATE todos SET user_id = (" " SELECT id FROM users WHERE role = 'admin' ORDER BY id LIMIT 1" ")" ) op.create_foreign_key( "fk_todos_user_id", "todos", "users", ["user_id"], ["id"], ondelete="CASCADE" ) op.alter_column("todos", "user_id", nullable=False) op.create_index("ix_todos_user_id", "todos", ["user_id"]) op.create_index("ix_todos_user_completed", "todos", ["user_id", "completed"]) op.create_index("ix_todos_user_due_date", "todos", ["user_id", "due_date"]) def downgrade() -> None: op.drop_index("ix_todos_user_due_date", table_name="todos") op.drop_index("ix_todos_user_completed", table_name="todos") op.drop_index("ix_todos_user_id", table_name="todos") op.drop_constraint("fk_todos_user_id", "todos", type_="foreignkey") op.drop_column("todos", "user_id")