from sqlalchemy import update from sqlalchemy.ext.asyncio import AsyncSession from app.user.models import User async def consume_credit(user_uuid, session: AsyncSession) -> bool: """atomic UPDATE로 1크레딧 차감. WHERE credits > 0 조건으로 음수 차감 방지 + PostgreSQL 행 락. 차감 성공 여부 반환. """ result = await session.execute( update(User) .where(User.user_uuid == user_uuid, User.credits > 0) .values(credits=User.credits - 1) ) return result.rowcount > 0