diff --git a/api/migrations/versions/2025_05_30_1054-162a22ab34cf_mcp_tool_server_url_change_type.py b/api/migrations/versions/2025_05_30_1054-162a22ab34cf_mcp_tool_server_url_change_type.py new file mode 100644 index 0000000000..3e6d18b931 --- /dev/null +++ b/api/migrations/versions/2025_05_30_1054-162a22ab34cf_mcp_tool_server_url_change_type.py @@ -0,0 +1,39 @@ +"""mcp tool server url change type + +Revision ID: 162a22ab34cf +Revises: de71f8771550 +Create Date: 2025-05-30 10:54:44.511650 + +""" +from alembic import op +import models as models +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '162a22ab34cf' +down_revision = 'de71f8771550' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('tool_mcp_providers', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('unique_mcp_tool_provider'), type_='unique') + batch_op.drop_constraint(batch_op.f('unique_mcp_tool_provider_server_url_hash'), type_='unique') + batch_op.create_unique_constraint('unique_mcp_provider_name', ['tenant_id', 'name']) + batch_op.create_unique_constraint('unique_mcp_provider_server_url', ['tenant_id', 'server_url_hash']) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('tool_mcp_providers', schema=None) as batch_op: + batch_op.drop_constraint('unique_mcp_provider_server_url', type_='unique') + batch_op.drop_constraint('unique_mcp_provider_name', type_='unique') + batch_op.create_unique_constraint(batch_op.f('unique_mcp_tool_provider_server_url_hash'), ['server_url_hash']) + batch_op.create_unique_constraint(batch_op.f('unique_mcp_tool_provider'), ['name', 'tenant_id']) + + # ### end Alembic commands ### diff --git a/api/models/tools.py b/api/models/tools.py index 97e0e17181..478de0db00 100644 --- a/api/models/tools.py +++ b/api/models/tools.py @@ -198,8 +198,8 @@ class MCPToolProvider(Base): __tablename__ = "tool_mcp_providers" __table_args__ = ( db.PrimaryKeyConstraint("id", name="tool_mcp_provider_pkey"), - db.UniqueConstraint("name", "tenant_id", name="unique_mcp_tool_provider"), - db.UniqueConstraint("server_url_hash", name="unique_mcp_tool_provider_server_url_hash"), + db.UniqueConstraint("tenant_id", "server_url_hash", name="unique_mcp_provider_server_url"), + db.UniqueConstraint("tenant_id", "name", name="unique_mcp_provider_name"), ) id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))