fix: переместить commit в handler после conduct_draw для правильной работы транзакции
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
@@ -358,9 +358,8 @@ class LotteryService:
|
|||||||
'is_manual': info['is_manual']
|
'is_manual': info['is_manual']
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info(f"conduct_draw: коммитим изменения")
|
# НЕ коммитим здесь - это должно сделать вызывающая функция
|
||||||
await session.commit()
|
logger.info(f"conduct_draw: изменения подготовлены, победителей: {len(results)}")
|
||||||
logger.info(f"conduct_draw: успешно завершено, победителей: {len(results)}")
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -2707,10 +2707,15 @@ async def conduct_lottery_draw(callback: CallbackQuery):
|
|||||||
logger.info(f"Розыгрыш {lottery_id} проведён, победителей: {len(winners_dict)}")
|
logger.info(f"Розыгрыш {lottery_id} проведён, победителей: {len(winners_dict)}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Ошибка при проведении розыгрыша {lottery_id}: {e}", exc_info=True)
|
logger.error(f"Ошибка при проведении розыгрыша {lottery_id}: {e}", exc_info=True)
|
||||||
|
await session.rollback()
|
||||||
await callback.answer(f"❌ Ошибка: {e}", show_alert=True)
|
await callback.answer(f"❌ Ошибка: {e}", show_alert=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
if winners_dict:
|
if winners_dict:
|
||||||
|
# Коммитим изменения в БД
|
||||||
|
await session.commit()
|
||||||
|
logger.info(f"Изменения закоммичены для розыгрыша {lottery_id}")
|
||||||
|
|
||||||
# Отправляем уведомления победителям
|
# Отправляем уведомления победителям
|
||||||
from ..utils.notifications import notify_winners_async
|
from ..utils.notifications import notify_winners_async
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user