open-webui/backend/open_webui/models
Classic298 7cf6051a74
perf: resolve group membership once per folder listing instead of once per entry (#28810)
Listing a user's folders re-checks which entries they may still see, and it resolved their group membership again for every folder, then again inside the collection and note branches for every entry. A comment in that helper claims one membership fetch for the whole listing, but the caller invokes it once per folder, so the claim never held.

The listing now resolves membership once, and only when some folder actually carries entries, then threads it through the file, collection and note checks. Callers that do not supply it are unchanged and still resolve for themselves.

Measured with twenty folders holding six files, two knowledge bases and two notes each: 245 queries and ~145 ms before, 186 and ~117 ms after. The folders returned, and the entries the integrity pass writes back, are unchanged. That was checked against entries the caller owns, entries shared through a group, entries shared with nobody, another user's files, and an unrecognised entry type.
2026-08-19 11:16:29 -07:00
..
access_grants.py fix: list publicly shared read-only notes in the Read Only view (#27637) 2026-08-17 01:40:56 -06:00
auths.py refac 2026-07-27 04:50:07 -04:00
automations.py fix: match both JSON text spellings when searching serialised JSON columns (#28399) 2026-08-17 01:24:05 -06:00
calendar.py fix: treat a non-numeric calendar alert_minutes as unset (#28790) 2026-08-19 11:16:00 -07:00
channels.py refac 2026-08-10 20:00:43 -06:00
chat_messages.py perf: write a chat's messages in one transaction instead of one per message (#28806) 2026-08-19 12:46:49 -05:00
chats.py perf: write a chat's messages in one transaction instead of one per message (#28806) 2026-08-19 12:46:49 -05:00
config.py refac 2026-08-13 15:02:18 -06:00
feedbacks.py perf: drop redundant session.refresh calls after commit across the model layer (#27381) 2026-07-23 18:08:00 -05:00
files.py perf: drop redundant session.refresh calls after commit across the model layer (#27381) 2026-07-23 18:08:00 -05:00
folders.py perf: batch the shared folder listing instead of fetching one folder at a time (#28804) 2026-08-19 11:06:37 -07:00
functions.py fix: prevent startup crash when function/tool has null user_id (#26850) 2026-07-24 00:00:37 -05:00
groups.py perf: index group_member on (user_id, group_id) (#27822) 2026-07-31 19:09:15 -05:00
knowledge.py perf: resolve group membership once per folder listing instead of once per entry (#28810) 2026-08-19 11:16:29 -07:00
memories.py refac 2026-07-24 01:54:36 -04:00
messages.py chore: remove dead json imports (#27815) 2026-07-31 17:25:40 -04:00
models.py perf: resolve model-attached file access with a targeted query (#28802) 2026-08-19 11:07:43 -07:00
notes.py refac 2026-08-10 19:46:46 -06:00
oauth_sessions.py refac 2026-07-31 17:41:14 -04:00
prompt_history.py chore: remove dead json imports (#27815) 2026-07-31 17:25:40 -04:00
prompts.py fix: match both JSON text spellings when searching serialised JSON columns (#28399) 2026-08-17 01:24:05 -06:00
shared_chats.py feat(ui): add 'Unshare All Shared Chats' button to Shared Chats modal (#25848) 2026-06-17 03:06:41 +02:00
skills.py perf: stop scanning every skill on each listing and chat turn (#28798) 2026-08-19 11:07:33 -07:00
tags.py perf: build debug log messages lazily so disabled debug logs cost nothing (#27834) 2026-07-31 19:09:01 -05:00
tools.py refac 2026-07-27 02:44:21 -04:00
users.py refactor: match provider identity lookups via JSON subscript (#28624) 2026-08-17 01:05:16 -06:00