"""add task completed_at timestamp Revision ID: 0018_task_completed_at Revises: 0017_memos """ import sqlalchemy as sa from alembic import op revision = "0018_task_completed_at" down_revision = "0017_memos" branch_labels = None depends_on = None def upgrade() -> None: with op.batch_alter_table("tasks") as batch_op: batch_op.add_column(sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True)) batch_op.create_index("ix_tasks_completed_at", ["completed_at"]) op.execute("UPDATE tasks SET completed_at = updated_at WHERE completed IS TRUE AND completed_at IS NULL") def downgrade() -> None: with op.batch_alter_table("tasks") as batch_op: batch_op.drop_index("ix_tasks_completed_at") batch_op.drop_column("completed_at")