From 585cbe8fb68a0bc1974a8d653c7298792aaf36db Mon Sep 17 00:00:00 2001 From: machka-pasla Date: Fri, 12 Sep 2025 12:57:35 +0300 Subject: [PATCH] Refactor subscription retrieval logic to limit results to the most recent active subscription. Updated query execution to return the first scalar result for improved performance. --- db/dal/subscription_dal.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/db/dal/subscription_dal.py b/db/dal/subscription_dal.py index 1785c82..2e258e0 100644 --- a/db/dal/subscription_dal.py +++ b/db/dal/subscription_dal.py @@ -14,13 +14,15 @@ async def get_active_subscription_by_user_id( user_id: int, panel_user_uuid: Optional[str] = None) -> Optional[Subscription]: stmt = select(Subscription).where( - Subscription.user_id == user_id, Subscription.is_active == True, - Subscription.end_date > datetime.now(timezone.utc)) + Subscription.user_id == user_id, + Subscription.is_active == True, + Subscription.end_date > datetime.now(timezone.utc), + ) if panel_user_uuid: stmt = stmt.where(Subscription.panel_user_uuid == panel_user_uuid) - stmt = stmt.order_by(Subscription.end_date.desc()) + stmt = stmt.order_by(Subscription.end_date.desc()).limit(1) result = await session.execute(stmt) - return result.scalar_one_or_none() + return result.scalars().first() async def get_subscription_by_panel_subscription_uuid(