fix: drop server_default before dropping enum type in migration 008

This commit is contained in:
jlightner 2026-03-31 02:46:30 +00:00
parent 63225a3559
commit 7127237afe

View file

@ -18,7 +18,10 @@ depends_on = None
def upgrade() -> None: def upgrade() -> None:
# 1. Convert column to text to break free of the old enum # 1. Drop server default (it references the old enum type)
op.alter_column("source_videos", "processing_status", server_default=None)
# 2. Convert column to text to break free of the old enum
op.alter_column( op.alter_column(
"source_videos", "processing_status", "source_videos", "processing_status",
type_=sa.Text(), type_=sa.Text(),
@ -26,23 +29,23 @@ def upgrade() -> None:
postgresql_using="processing_status::text", postgresql_using="processing_status::text",
) )
# 2. Drop old enum type # 3. Drop old enum type
op.execute("DROP TYPE IF EXISTS processing_status") op.execute("DROP TYPE IF EXISTS processing_status")
# 3. Rename values in the text column # 4. Rename values in the text column
op.execute("UPDATE source_videos SET processing_status = 'not_started' WHERE processing_status = 'pending'") 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 = '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 = 'processing' WHERE processing_status = 'extracted'")
op.execute("UPDATE source_videos SET processing_status = 'complete' WHERE processing_status = 'published'") op.execute("UPDATE source_videos SET processing_status = 'complete' WHERE processing_status = 'published'")
# 4. Create new enum type # 5. Create new enum type
processing_status = sa.Enum( processing_status = sa.Enum(
"not_started", "queued", "processing", "error", "complete", "not_started", "queued", "processing", "error", "complete",
name="processing_status", name="processing_status",
) )
processing_status.create(op.get_bind(), checkfirst=True) processing_status.create(op.get_bind(), checkfirst=True)
# 5. Convert column back to enum # 6. Convert column back to enum with new default
op.alter_column( op.alter_column(
"source_videos", "processing_status", "source_videos", "processing_status",
type_=processing_status, type_=processing_status,
@ -53,6 +56,7 @@ def upgrade() -> None:
def downgrade() -> None: def downgrade() -> None:
op.alter_column("source_videos", "processing_status", server_default=None)
op.alter_column( op.alter_column(
"source_videos", "processing_status", "source_videos", "processing_status",
type_=sa.Text(), type_=sa.Text(),