From 0457e9f7356b045097308903e46d23f71dbe8e2a Mon Sep 17 00:00:00 2001 From: Differ <1467673018@qq.com> Date: Fri, 5 Dec 2025 15:38:38 +0800 Subject: [PATCH] feat: add alembic migration for BOOKSTACK_CONNECTOR enum --- .../39_add_bookstack_connector_enums.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 surfsense_backend/alembic/versions/39_add_bookstack_connector_enums.py diff --git a/surfsense_backend/alembic/versions/39_add_bookstack_connector_enums.py b/surfsense_backend/alembic/versions/39_add_bookstack_connector_enums.py new file mode 100644 index 000000000..9c6b5c8c7 --- /dev/null +++ b/surfsense_backend/alembic/versions/39_add_bookstack_connector_enums.py @@ -0,0 +1,61 @@ +"""Add BOOKSTACK_CONNECTOR to enums + +Revision ID: 39 +Revises: 38 +""" + +from collections.abc import Sequence + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "39" +down_revision: str | None = "38" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + """Safely add 'BOOKSTACK_CONNECTOR' to enum types if missing.""" + + # Add to searchsourceconnectortype enum + op.execute( + """ + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_type t + JOIN pg_enum e ON t.oid = e.enumtypid + WHERE t.typname = 'searchsourceconnectortype' AND e.enumlabel = 'BOOKSTACK_CONNECTOR' + ) THEN + ALTER TYPE searchsourceconnectortype ADD VALUE 'BOOKSTACK_CONNECTOR'; + END IF; + END + $$; + """ + ) + + # Add to documenttype enum + op.execute( + """ + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_type t + JOIN pg_enum e ON t.oid = e.enumtypid + WHERE t.typname = 'documenttype' AND e.enumlabel = 'BOOKSTACK_CONNECTOR' + ) THEN + ALTER TYPE documenttype ADD VALUE 'BOOKSTACK_CONNECTOR'; + END IF; + END + $$; + """ + ) + + +def downgrade() -> None: + """ + Downgrade logic not implemented since PostgreSQL + does not support removing enum values. + """ + pass