Files
state-hub/migrations/versions/u8p9q0r1s2t3_workstream_canonical_states.py

49 lines
1.1 KiB
Python

"""normalize workstream lifecycle states
Revision ID: u8p9q0r1s2t3
Revises: t7o8p9q0r1s2
Create Date: 2026-05-17
"""
from alembic import op
revision = "u8p9q0r1s2t3"
down_revision = "t7o8p9q0r1s2"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.execute(
"""
UPDATE workstreams
SET status = 'finished'
WHERE status IN ('completed', 'accepted', 'done')
"""
)
op.execute(
"""
UPDATE workstreams ws
SET status = 'active'
WHERE status = 'todo'
AND EXISTS (
SELECT 1
FROM tasks t
WHERE t.workstream_id = ws.id
AND t.status <> 'todo'
)
"""
)
op.execute(
"""
UPDATE workstreams
SET status = 'ready'
WHERE status = 'todo'
"""
)
def downgrade() -> None:
op.execute("UPDATE workstreams SET status = 'completed' WHERE status = 'finished'")
op.execute("UPDATE workstreams SET status = 'active' WHERE status IN ('proposed', 'ready', 'backlog')")