mirror of
https://github.com/open-webui/open-webui.git
synced 2026-07-10 23:55:15 -05:00
[PR #24287] [MERGED] perf: make /tags fetch only the tags column with SQL access filter #131252
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/24287
Author: @Classic298
Created: 5/1/2026
Status: ✅ Merged
Merged: 5/8/2026
Merged by: @tjbck
Base:
dev← Head:perf/prompts-tags-query📝 Commits (1)
95f7fd2perf(prompts): make /tags fetch only the tags column with SQL access filter📊 Changes
2 files changed (+32 additions, -12 deletions)
View changed files
📝
backend/open_webui/models/prompts.py(+31 -5)📝
backend/open_webui/routers/prompts.py(+1 -7)📄 Description
Fixes : https://github.com/open-webui/open-webui/discussions/24258
Non-admin GET /api/v1/prompts/tags went through get_prompts_by_user_id, which loaded every active prompt with its full content/data/meta plus owner records and all access grants, then ran one has_access query per prompt that wasn't owned by the caller - all so the endpoint could collapse the result to a sorted tag list. With 600 prompts this took several seconds while the admin path (a single SELECT) returned in <1s.
Add Prompts.get_tags_by_user_id which selects only the tags column and applies the same EXISTS-based access filter used by /list. Also tighten the admin get_tags to project just the tags column instead of full rows. The endpoint is now one DB query (plus one for groups), no row hydration, no N+1.
Contributor License Agreement
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.