🐐
This commit is contained in:
@@ -56,15 +56,21 @@ def record_game_result(state: GameState, db: Session):
|
||||
loser_deck_id = active_deck_ids.get(loser_id_str)
|
||||
|
||||
if AI_USER_ID not in [winner_id_str, loser_id_str]:
|
||||
deck = db.query(DeckModel).filter(DeckModel.id == uuid.UUID(winner_deck_id)).first()
|
||||
if deck:
|
||||
deck.times_played += 1
|
||||
deck.wins += 1
|
||||
if winner_deck_id:
|
||||
deck = db.query(DeckModel).filter(DeckModel.id == uuid.UUID(winner_deck_id)).first()
|
||||
if deck:
|
||||
deck.times_played += 1
|
||||
deck.wins += 1
|
||||
else:
|
||||
logger.warning(f"record_game_result: no deck_id found for winner {winner_id_str}")
|
||||
|
||||
deck = db.query(DeckModel).filter(DeckModel.id == uuid.UUID(loser_deck_id)).first()
|
||||
if deck:
|
||||
deck.times_played += 1
|
||||
deck.losses += 1
|
||||
if loser_deck_id:
|
||||
deck = db.query(DeckModel).filter(DeckModel.id == uuid.UUID(loser_deck_id)).first()
|
||||
if deck:
|
||||
deck.times_played += 1
|
||||
deck.losses += 1
|
||||
else:
|
||||
logger.warning(f"record_game_result: no deck_id found for loser {loser_id_str}")
|
||||
|
||||
db.commit()
|
||||
|
||||
@@ -251,6 +257,7 @@ async def handle_action(game_id: str, user_id: str, message: dict, db: Session):
|
||||
db.commit()
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to increment times_played for card {card_instance.card_id}: {e}")
|
||||
db.rollback()
|
||||
elif action == "sacrifice":
|
||||
slot = message.get("slot")
|
||||
if slot is None:
|
||||
@@ -297,7 +304,7 @@ async def handle_action(game_id: str, user_id: str, message: dict, db: Session):
|
||||
|
||||
DISCONNECT_GRACE_SECONDS = 15
|
||||
|
||||
async def handle_disconnect(game_id: str, user_id: str, db: Session):
|
||||
async def handle_disconnect(game_id: str, user_id: str):
|
||||
await asyncio.sleep(DISCONNECT_GRACE_SECONDS)
|
||||
|
||||
# Check if game still exists and player hasn't reconnected
|
||||
@@ -318,7 +325,12 @@ async def handle_disconnect(game_id: str, user_id: str, db: Session):
|
||||
)
|
||||
state.phase = "end"
|
||||
|
||||
record_game_result(state, db)
|
||||
from database import SessionLocal
|
||||
db = SessionLocal()
|
||||
try:
|
||||
record_game_result(state, db)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
# Notify the remaining player
|
||||
winner_ws = connections[game_id].get(winner_id)
|
||||
|
||||
Reference in New Issue
Block a user