Refactor subscription endpoint to return SubscriptionStatusResponse

This commit is contained in:
Egor
2026-01-29 01:02:40 +03:00
committed by GitHub
parent 5d6d3b962b
commit f7fc7d5cb0
+8 -7
View File
@@ -48,7 +48,9 @@ from ..schemas.subscription import (
RenewalOptionResponse,
RenewalRequest,
ServerInfo,
SubscriptionData,
SubscriptionResponse,
SubscriptionStatusResponse,
TariffPurchaseRequest,
TrafficPackageResponse,
TrafficPurchaseRequest,
@@ -66,7 +68,7 @@ def _subscription_to_response(
servers: list[ServerInfo] | None = None,
tariff_name: str | None = None,
traffic_purchases: list[dict[str, Any]] | None = None,
) -> SubscriptionResponse:
) -> SubscriptionData:
"""Convert Subscription model to response."""
now = datetime.utcnow()
@@ -171,7 +173,7 @@ def _subscription_to_response(
)
@router.get('', response_model=SubscriptionResponse)
@router.get('', response_model=SubscriptionStatusResponse)
async def get_subscription(
user: User = Depends(get_current_cabinet_user),
db: AsyncSession = Depends(get_cabinet_db),
@@ -184,10 +186,8 @@ async def get_subscription(
fresh_user = await get_user_by_id(db, user.id)
if not fresh_user or not fresh_user.subscription:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='No subscription found',
)
# Return 200 with has_subscription: false instead of 404
return SubscriptionStatusResponse(has_subscription=False, subscription=None)
# Load tariff for daily subscription check and tariff name
tariff_name = None
@@ -241,7 +241,8 @@ async def get_subscription(
}
)
return _subscription_to_response(fresh_user.subscription, servers, tariff_name, traffic_purchases_data)
subscription_data = _subscription_to_response(fresh_user.subscription, servers, tariff_name, traffic_purchases_data)
return SubscriptionStatusResponse(has_subscription=True, subscription=subscription_data)
@router.get('/renewal-options', response_model=list[RenewalOptionResponse])