From e5e39be90f141e187fa69f557db776fc7bd4ac1d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 16 Feb 2026 13:14:40 -0600 Subject: [PATCH] refac --- backend/open_webui/models/groups.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/models/groups.py b/backend/open_webui/models/groups.py index bb3a9347be..c9a38f1ede 100644 --- a/backend/open_webui/models/groups.py +++ b/backend/open_webui/models/groups.py @@ -164,10 +164,14 @@ class GroupTable: def get_groups(self, filter, db: Optional[Session] = None) -> list[GroupResponse]: with get_db_context(db) as db: - member_count = func.count(GroupMember.user_id).label("member_count") - query = db.query(Group, member_count).outerjoin( - GroupMember, GroupMember.group_id == Group.id + member_count = ( + select(func.count(GroupMember.user_id)) + .where(GroupMember.group_id == Group.id) + .correlate(Group) + .scalar_subquery() + .label("member_count") ) + query = db.query(Group, member_count) if filter: if "query" in filter: @@ -218,7 +222,7 @@ class GroupTable: ) ) - results = query.group_by(Group.id).order_by(Group.updated_at.desc()).all() + results = query.order_by(Group.updated_at.desc()).all() return [ GroupResponse.model_validate( @@ -260,11 +264,15 @@ class GroupTable: total = query.count() - member_count = func.count(GroupMember.user_id).label("member_count") + member_count = ( + select(func.count(GroupMember.user_id)) + .where(GroupMember.group_id == Group.id) + .correlate(Group) + .scalar_subquery() + .label("member_count") + ) results = ( query.add_columns(member_count) - .outerjoin(GroupMember, GroupMember.group_id == Group.id) - .group_by(Group.id) .order_by(Group.updated_at.desc()) .offset(skip) .limit(limit)