42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""Legacy endpoint retained for old clients; only active credit add-ons are returned."""
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.dependencies import get_current_user, get_db
|
|
from app.enums.credit_product import CreditProductType
|
|
from app.models.credit.product import CreditProduct
|
|
from app.models.user import User
|
|
from app.services.credit.product_service import product_to_dict
|
|
|
|
router = APIRouter(tags=["recharge-packages"])
|
|
|
|
|
|
@router.get("/recharge-packages")
|
|
async def list_active_packages(
|
|
current_user: User = Depends(get_current_user),
|
|
db: AsyncSession = Depends(get_db),
|
|
):
|
|
result = await db.execute(
|
|
select(CreditProduct)
|
|
.where(
|
|
CreditProduct.product_type == CreditProductType.CREDIT_ADDON.value,
|
|
CreditProduct.is_active.is_(True),
|
|
)
|
|
.order_by(CreditProduct.sort_order.asc(), CreditProduct.id.asc())
|
|
)
|
|
items = []
|
|
for product in result.scalars().all():
|
|
payload = product_to_dict(product, user_price=product.price, price_type="regular", can_purchase=True)
|
|
payload.update(
|
|
{
|
|
"credits": payload["grant_credits"],
|
|
"bonus_credits": 0.0,
|
|
"total_credits": payload["grant_credits"],
|
|
"package_type": "credit_addon",
|
|
"is_gift": False,
|
|
}
|
|
)
|
|
items.append(payload)
|
|
return items
|