diff --git a/backend/open_webui/migrations/versions/1ce6ade7d93b_add_group_member_user_id_index.py b/backend/open_webui/migrations/versions/1ce6ade7d93b_add_group_member_user_id_index.py new file mode 100644 index 0000000000..a5a00b7b2a --- /dev/null +++ b/backend/open_webui/migrations/versions/1ce6ade7d93b_add_group_member_user_id_index.py @@ -0,0 +1,28 @@ +"""Add group_member user_id index + +Revision ID: 1ce6ade7d93b +Revises: f0bd01a18a3d +Create Date: 2026-07-31 03:00:00.000000 + +""" + +import sqlalchemy as sa +from alembic import op + +revision = '1ce6ade7d93b' +down_revision = 'f0bd01a18a3d' +branch_labels = None +depends_on = None + + +def upgrade(): + conn = op.get_bind() + inspector = sa.inspect(conn) + existing_indexes = {idx['name'] for idx in inspector.get_indexes('group_member')} + + if 'ix_group_member_user_id_group_id' not in existing_indexes: + op.create_index('ix_group_member_user_id_group_id', 'group_member', ['user_id', 'group_id']) + + +def downgrade(): + op.drop_index('ix_group_member_user_id_group_id', table_name='group_member') diff --git a/backend/open_webui/models/groups.py b/backend/open_webui/models/groups.py index 8f402f0b12..611afe576d 100644 --- a/backend/open_webui/models/groups.py +++ b/backend/open_webui/models/groups.py @@ -12,6 +12,7 @@ from sqlalchemy import ( BigInteger, Column, ForeignKey, + Index, String, Text, and_, @@ -71,6 +72,8 @@ class GroupModel(BaseModel): class GroupMember(Base): __tablename__ = 'group_member' + # The table's (group_id, user_id) unique constraint cannot serve user_id lookups. + __table_args__ = (Index('ix_group_member_user_id_group_id', 'user_id', 'group_id'),) id = Column(Text, unique=True, primary_key=True) group_id = Column(