chrysopedia/alembic/versions/008_rename_processing_status.py

35 lines
1.8 KiB
Python

"""Rename processing_status values to user-meaningful lifecycle states.
Old: pending, transcribed, extracted, published
New: not_started, queued, processing, error, complete
Revision ID: 008_rename_processing_status
Revises: 007_drop_review_columns
"""
from alembic import op
revision = "008_rename_processing_status"
down_revision = "007_drop_review_columns"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Add new enum values first
op.execute("ALTER TYPE processing_status ADD VALUE IF NOT EXISTS 'not_started'")
op.execute("ALTER TYPE processing_status ADD VALUE IF NOT EXISTS 'queued'")
op.execute("ALTER TYPE processing_status ADD VALUE IF NOT EXISTS 'processing'")
op.execute("ALTER TYPE processing_status ADD VALUE IF NOT EXISTS 'error'")
op.execute("ALTER TYPE processing_status ADD VALUE IF NOT EXISTS 'complete'")
# Migrate existing rows
op.execute("UPDATE source_videos SET processing_status = 'not_started' WHERE processing_status = 'pending'")
op.execute("UPDATE source_videos SET processing_status = 'queued' WHERE processing_status = 'transcribed'")
op.execute("UPDATE source_videos SET processing_status = 'processing' WHERE processing_status = 'extracted'")
op.execute("UPDATE source_videos SET processing_status = 'complete' WHERE processing_status = 'published'")
def downgrade() -> None:
op.execute("UPDATE source_videos SET processing_status = 'pending' WHERE processing_status = 'not_started'")
op.execute("UPDATE source_videos SET processing_status = 'transcribed' WHERE processing_status = 'queued'")
op.execute("UPDATE source_videos SET processing_status = 'extracted' WHERE processing_status = 'processing'")
op.execute("UPDATE source_videos SET processing_status = 'published' WHERE processing_status = 'complete'")