from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.dependencies import get_db, get_current_user from app.models.user import User from app.models.credit_ratio import CreditRatio from app.schemas.credit import CreditBalanceOut, CreditRecordOut from app.schemas.credit_ratio import CreditRatioOut from app.services.credits import get_records from sqlalchemy import select router = APIRouter(prefix="/credits", tags=["credits"]) @router.get("", response_model=CreditBalanceOut) async def get_credits( current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): records = await get_records(db, current_user.id) return CreditBalanceOut( credits=round(current_user.credits, 2), records=[CreditRecordOut.model_validate(r) for r in records], ) @router.get("/ratios", response_model=dict) async def get_credit_ratios( current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db), ): result = await db.execute(select(CreditRatio)) ratios = result.scalars().all() grouped = {} for ratio in ratios: if ratio.gen_type not in grouped: grouped[ratio.gen_type] = [] grouped[ratio.gen_type].append(CreditRatioOut.model_validate(ratio)) return grouped