From fddf8ef5ebc8e5176a75a10e92d59165bdabf2e1 Mon Sep 17 00:00:00 2001 From: Fringg Date: Wed, 18 Mar 2026 05:50:00 +0300 Subject: [PATCH] fix: remove contains_eager conflicting with selectinload on user relationship MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Loader strategies for the same ORM path cannot coexist. The _apply_user_join_filter helper added contains_eager(model.user) on top of the selectinload(Model.user) already present in each query, causing InvalidRequestError at runtime. Removed contains_eager — selectinload handles user loading correctly on its own. --- app/services/payment_search_service.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/services/payment_search_service.py b/app/services/payment_search_service.py index e0a6205d..18d31943 100644 --- a/app/services/payment_search_service.py +++ b/app/services/payment_search_service.py @@ -11,7 +11,7 @@ from typing import Any import structlog from sqlalchemy import cast, desc, or_, select from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import contains_eager, selectinload +from sqlalchemy.orm import selectinload from sqlalchemy.types import String as SAString from app.database.models import ( @@ -225,7 +225,6 @@ def _apply_user_join_filter( ) -> Any: """Apply user-based search filters by joining the User table.""" stmt = stmt.join(User, model.user_id == User.id) - stmt = stmt.options(contains_eager(model.user)) if search_kind == _UserSearchKind.USERNAME: username = search_value.lstrip('@') stmt = stmt.where(User.username.ilike(f'%{_escape_like(username)}%'))