From a55ef684e602e3b35e5e420a41369f5a3bc97bbc Mon Sep 17 00:00:00 2001 From: Egor Date: Sat, 30 Aug 2025 02:33:49 +0300 Subject: [PATCH] Update user.py --- app/database/crud/user.py | 56 ++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/app/database/crud/user.py b/app/database/crud/user.py index ca71faa7..a7778f7d 100644 --- a/app/database/crud/user.py +++ b/app/database/crud/user.py @@ -123,31 +123,37 @@ async def update_user( async def add_user_balance( db: AsyncSession, - user: User, - amount_kopeks: int, - description: str = "Пополнение баланса" -) -> User: - - user.add_balance(amount_kopeks) - user.updated_at = datetime.utcnow() - - from app.database.crud.transaction import create_transaction - from app.database.models import TransactionType - - await create_transaction( - db=db, - user_id=user.id, - type=TransactionType.DEPOSIT, - amount_kopeks=amount_kopeks, - description=description - ) - - await db.commit() - await db.refresh(user) - - logger.info(f"💰 Пополнен баланс пользователя {user.telegram_id}: +{amount_kopeks/100}₽") - return user - + user_id: int, + amount_kopeks: int +) -> bool: + """ + Простое добавление средств к балансу пользователя. + НЕ создает транзакцию - это должно делаться отдельно! + """ + try: + result = await db.execute( + select(User).where(User.id == user_id) + ) + user = result.scalar_one_or_none() + + if not user: + logger.error(f"Пользователь с ID {user_id} не найден") + return False + + old_balance = user.balance_kopeks + user.balance_kopeks += amount_kopeks + user.updated_at = datetime.utcnow() + + await db.commit() + await db.refresh(user) + + logger.info(f"💰 Баланс пользователя {user.telegram_id} изменен: {old_balance} → {user.balance_kopeks} (изменение: {amount_kopeks})") + return True + + except Exception as e: + logger.error(f"Ошибка изменения баланса пользователя {user_id}: {e}") + await db.rollback() + return False async def subtract_user_balance( db: AsyncSession,