From 9bdb07269057b60fdf3a0fa962725cad5e99e642 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Wed, 19 Aug 2026 20:07:21 +0200 Subject: [PATCH] refac: remove unused knowledge base accessors (#28794) Three methods on KnowledgeTable have no callers anywhere in the repository. get_knowledge_bases_by_user_id loaded every knowledge base and filtered them in Python, which search_knowledge_bases already does in SQL with pagination. get_knowledge_by_id_and_user_id duplicates check_access_by_user_id with the permission hardcoded to write. update_knowledge_data_by_id writes a data column that a migration dropped, so it could only ever raise and return None through its own except block. What remains is one per-entry access helper and one SQL-filtered list path, so nobody reaches for the slower or the broken variant by accident. No behaviour change. --- backend/open_webui/models/knowledge.py | 60 -------------------------- 1 file changed, 60 deletions(-) diff --git a/backend/open_webui/models/knowledge.py b/backend/open_webui/models/knowledge.py index b3a231a4a7..401265a1c6 100644 --- a/backend/open_webui/models/knowledge.py +++ b/backend/open_webui/models/knowledge.py @@ -484,24 +484,6 @@ class KnowledgeTable: db=db, ) - async def get_knowledge_bases_by_user_id( - self, user_id: str, permission: str = 'write', db: Optional[AsyncSession] = None - ) -> list[KnowledgeUserModel]: - knowledge_bases = await self.get_knowledge_bases(db=db) - user_groups = await Groups.get_groups_by_member_id(user_id, db=db) - user_group_ids = {group.id for group in user_groups} - - # One grants query for all non-owned knowledge bases instead of one each - accessible_ids = await AccessGrants.get_accessible_resource_ids( - user_id=user_id, - resource_type='knowledge', - resource_ids=[kb.id for kb in knowledge_bases if kb.user_id != user_id], - permission=permission, - user_group_ids=user_group_ids, - db=db, - ) - return [kb for kb in knowledge_bases if kb.user_id == user_id or kb.id in accessible_ids] - async def get_knowledge_by_id(self, id: str, db: Optional[AsyncSession] = None) -> Optional[KnowledgeModel]: try: async with get_async_db_context(db) as db: @@ -511,29 +493,6 @@ class KnowledgeTable: except Exception: return None - async def get_knowledge_by_id_and_user_id( - self, id: str, user_id: str, db: Optional[AsyncSession] = None - ) -> Optional[KnowledgeModel]: - knowledge = await self.get_knowledge_by_id(id, db=db) - if not knowledge: - return None - - if knowledge.user_id == user_id: - return knowledge - - user_groups = await Groups.get_groups_by_member_id(user_id, db=db) - user_group_ids = {group.id for group in user_groups} - if await AccessGrants.has_access( - user_id=user_id, - resource_type='knowledge', - resource_id=knowledge.id, - permission='write', - user_group_ids=user_group_ids, - db=db, - ): - return knowledge - return None - async def get_knowledges_by_file_id(self, file_id: str, db: Optional[AsyncSession] = None) -> list[KnowledgeModel]: try: async with get_async_db_context(db) as db: @@ -808,25 +767,6 @@ class KnowledgeTable: log.exception(e) return None - async def update_knowledge_data_by_id( - self, id: str, data: dict, db: Optional[AsyncSession] = None - ) -> Optional[KnowledgeModel]: - try: - async with get_async_db_context(db) as db: - await db.execute( - update(Knowledge) - .filter_by(id=id) - .values( - data=data, - updated_at=int(time.time()), - ) - ) - await db.commit() - return await self.get_knowledge_by_id(id=id, db=db) - except Exception as e: - log.exception(e) - return None - async def update_knowledge_meta_by_id( self, id: str, meta: dict, db: Optional[AsyncSession] = None ) -> Optional[KnowledgeModel]: