from fastapi import APIRouter, Depends from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.dependencies import get_db, get_current_user from app.models.user import User from app.models.recharge_package import RechargePackage router = APIRouter(tags=["recharge-packages"]) def _to_out(pkg: RechargePackage) -> dict: return { "id": pkg.id, "name": pkg.name, "credits": round(pkg.credits, 2), "price": round(pkg.price, 2), "bonus_credits": round(pkg.bonus_credits, 2), "total_credits": round(pkg.credits + pkg.bonus_credits, 2), "description": pkg.description, "package_type": pkg.package_type, "is_gift": pkg.is_gift, "is_active": pkg.is_active, "sort_order": pkg.sort_order, } @router.get("/recharge-packages") async def list_active_packages( current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): """Public: list active recharge packages.""" result = await db.execute( select(RechargePackage) .where(RechargePackage.is_active == True) .order_by(RechargePackage.sort_order) ) return [_to_out(p) for p in result.scalars().all()]