From c97a3c1ab60134a4c85ab1ec35b1e750a14d9e37 Mon Sep 17 00:00:00 2001 From: Manoj Aggarwal Date: Fri, 16 Jan 2026 11:25:47 -0800 Subject: [PATCH] some reverts --- .../versions/62_add_mcp_connector_type.py | 8 +- ..._allow_multiple_connectors_with_unique_.py | 97 +++++++++++++++++++ 2 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 surfsense_backend/alembic/versions/63_allow_multiple_connectors_with_unique_.py diff --git a/surfsense_backend/alembic/versions/62_add_mcp_connector_type.py b/surfsense_backend/alembic/versions/62_add_mcp_connector_type.py index d28e76019..706b79497 100644 --- a/surfsense_backend/alembic/versions/62_add_mcp_connector_type.py +++ b/surfsense_backend/alembic/versions/62_add_mcp_connector_type.py @@ -1,7 +1,7 @@ """Add MCP connector type -Revision ID: a1b2c3d4e5f6 -Revises: 63 +Revision ID: 62 +Revises: 61 Create Date: 2026-01-09 15:19:51.827647 """ @@ -11,8 +11,8 @@ from collections.abc import Sequence from alembic import op # revision identifiers, used by Alembic. -revision: str = 'a1b2c3d4e5f6' -down_revision: str | None = '63' +revision: str = '62' +down_revision: str | None = '61' branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None diff --git a/surfsense_backend/alembic/versions/63_allow_multiple_connectors_with_unique_.py b/surfsense_backend/alembic/versions/63_allow_multiple_connectors_with_unique_.py new file mode 100644 index 000000000..ff3f98906 --- /dev/null +++ b/surfsense_backend/alembic/versions/63_allow_multiple_connectors_with_unique_.py @@ -0,0 +1,97 @@ +"""allow_multiple_connectors_with_unique_names + +Revision ID: 63 +Revises: 62 +Create Date: 2026-01-13 12:23:31.481643 + +""" + +from collections.abc import Sequence + +from sqlalchemy import text + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "63" +down_revision: str | None = "62" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + """Upgrade schema.""" + connection = op.get_bind() + + # Check if old constraint exists before trying to drop it + old_constraint_exists = connection.execute( + text(""" + SELECT 1 FROM information_schema.table_constraints + WHERE table_name='search_source_connectors' + AND constraint_type='UNIQUE' + AND constraint_name='uq_searchspace_user_connector_type' + """) + ).scalar() + + if old_constraint_exists: + op.drop_constraint( + "uq_searchspace_user_connector_type", + "search_source_connectors", + type_="unique", + ) + + # Check if new constraint already exists before creating it + new_constraint_exists = connection.execute( + text(""" + SELECT 1 FROM information_schema.table_constraints + WHERE table_name='search_source_connectors' + AND constraint_type='UNIQUE' + AND constraint_name='uq_searchspace_user_connector_type_name' + """) + ).scalar() + + if not new_constraint_exists: + op.create_unique_constraint( + "uq_searchspace_user_connector_type_name", + "search_source_connectors", + ["search_space_id", "user_id", "connector_type", "name"], + ) + + +def downgrade() -> None: + """Downgrade schema.""" + connection = op.get_bind() + + # Check if new constraint exists before trying to drop it + new_constraint_exists = connection.execute( + text(""" + SELECT 1 FROM information_schema.table_constraints + WHERE table_name='search_source_connectors' + AND constraint_type='UNIQUE' + AND constraint_name='uq_searchspace_user_connector_type_name' + """) + ).scalar() + + if new_constraint_exists: + op.drop_constraint( + "uq_searchspace_user_connector_type_name", + "search_source_connectors", + type_="unique", + ) + + # Check if old constraint already exists before creating it + old_constraint_exists = connection.execute( + text(""" + SELECT 1 FROM information_schema.table_constraints + WHERE table_name='search_source_connectors' + AND constraint_type='UNIQUE' + AND constraint_name='uq_searchspace_user_connector_type' + """) + ).scalar() + + if not old_constraint_exists: + op.create_unique_constraint( + "uq_searchspace_user_connector_type", + "search_source_connectors", + ["search_space_id", "user_id", "connector_type"], + )