Merge pull request #17166 from sihyeonn/perf/sh-model-layer

perf: fix N+1 query issues in user group access control validation
This commit is contained in:
Tim Jaeryang Baek
2025-09-03 13:36:01 +04:00
committed by GitHub
5 changed files with 14 additions and 5 deletions
+3 -1
View File
@@ -8,6 +8,7 @@ from open_webui.internal.db import Base, get_db
from open_webui.env import SRC_LOG_LEVELS
from open_webui.models.files import FileMetadataResponse
from open_webui.models.groups import Groups
from open_webui.models.users import Users, UserResponse
@@ -152,11 +153,12 @@ class KnowledgeTable:
self, user_id: str, permission: str = "write"
) -> list[KnowledgeUserModel]:
knowledge_bases = self.get_knowledge_bases()
user_group_ids = {group.id for group in Groups.get_groups_by_member_id(user_id)}
return [
knowledge_base
for knowledge_base in knowledge_bases
if knowledge_base.user_id == user_id
or has_access(user_id, permission, knowledge_base.access_control)
or has_access(user_id, permission, knowledge_base.access_control, user_group_ids)
]
def get_knowledge_by_id(self, id: str) -> Optional[KnowledgeModel]: