From 0cd596b91f609a388e1c1264c9c1341175927b9c Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sun, 22 Mar 2026 01:41:15 -0700 Subject: [PATCH] refactor: update video presentation status enum creation to use SQL execution for better handling of duplicates --- .../versions/107_add_video_presentations_table.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/surfsense_backend/alembic/versions/107_add_video_presentations_table.py b/surfsense_backend/alembic/versions/107_add_video_presentations_table.py index e6f928b50..76cd42a23 100644 --- a/surfsense_backend/alembic/versions/107_add_video_presentations_table.py +++ b/surfsense_backend/alembic/versions/107_add_video_presentations_table.py @@ -7,7 +7,7 @@ Revises: 106 from collections.abc import Sequence import sqlalchemy as sa -from sqlalchemy.dialects.postgresql import JSONB +from sqlalchemy.dialects.postgresql import ENUM, JSONB from alembic import op @@ -16,17 +16,24 @@ down_revision: str | None = "106" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None -video_presentation_status_enum = sa.Enum( +video_presentation_status_enum = ENUM( "pending", "generating", "ready", "failed", name="video_presentation_status", + create_type=False, ) def upgrade() -> None: - video_presentation_status_enum.create(op.get_bind(), checkfirst=True) + op.execute(""" + DO $$ BEGIN + CREATE TYPE video_presentation_status AS ENUM ('pending', 'generating', 'ready', 'failed'); + EXCEPTION + WHEN duplicate_object THEN null; + END $$; + """) op.create_table( "video_presentations", @@ -82,4 +89,4 @@ def downgrade() -> None: op.drop_index("ix_video_presentations_thread_id", table_name="video_presentations") op.drop_index("ix_video_presentations_status", table_name="video_presentations") op.drop_table("video_presentations") - video_presentation_status_enum.drop(op.get_bind(), checkfirst=True) + op.execute("DROP TYPE IF EXISTS video_presentation_status")