refac: keep external connections until their last knowledge base is removed

Deleting an external knowledge base now clears its connection only when an admin removes the last knowledge base referencing it, matching the connection delete route.
This commit is contained in:
Classic298 2026-08-04 18:02:55 +02:00
parent 29541cbb52
commit ddd28a234a

View file

@ -1721,7 +1721,12 @@ async def delete_knowledge_by_id(
# Clean up vector DB
if is_external_knowledge(knowledge):
connection_id = (knowledge.meta or {}).get('external', {}).get('connection_id')
if connection_id:
# Connections are admin-owned and shared across knowledge bases
if (
connection_id
and user.role == 'admin'
and await _count_external_connection_mappings(connection_id, db=db) <= 1
):
connections = [
connection for connection in await _get_external_connections() if connection.get('id') != connection_id
]