20260727_02_nullable_manual_deadline.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """allow manual pipeline runs without a deadline
  2. Revision ID: 20260727_02
  3. Revises: 20260727_01
  4. Create Date: 2026-07-27
  5. """
  6. from __future__ import annotations
  7. from collections.abc import Sequence
  8. import sqlalchemy as sa
  9. from alembic import op
  10. revision: str = "20260727_02"
  11. down_revision: str | None = "20260727_01"
  12. branch_labels: str | Sequence[str] | None = None
  13. depends_on: str | Sequence[str] | None = None
  14. def upgrade() -> None:
  15. op.alter_column(
  16. "pipeline_run",
  17. "deadline_at",
  18. existing_type=sa.DateTime(),
  19. nullable=True,
  20. )
  21. op.execute(
  22. sa.text(
  23. "UPDATE pipeline_run "
  24. "SET deadline_at = NULL "
  25. "WHERE trigger_type NOT IN ('cron', 'reconcile')"
  26. )
  27. )
  28. def downgrade() -> None:
  29. op.execute(
  30. sa.text(
  31. "UPDATE pipeline_run "
  32. "SET deadline_at = UTC_TIMESTAMP() "
  33. "WHERE deadline_at IS NULL"
  34. )
  35. )
  36. op.alter_column(
  37. "pipeline_run",
  38. "deadline_at",
  39. existing_type=sa.DateTime(),
  40. nullable=False,
  41. )