Game finished: broadcast results, update DB #46

Open
opened 2026-04-19 07:23:40 +00:00 by forgejo-lila · 0 comments
Owner

Context

When a game ends, announce results and persist them.

Files to change

  • apps/api/src/ws/handlers/gameHandlers.ts
  • packages/db/src/models/lobbyModel.ts — update lobby status, write scores.

Behavior

  1. Broadcast game:finished with players (userId, displayName, score, rank), winnerId.
  2. Update lobby_players.score in PostgreSQL.
  3. Update lobbies.status to 'finished'.
  4. Clean up Valkey game state.
  5. Optionally write to game_results for stats.

Acceptance criteria

  • All players see final scores and winner
  • Results persisted in PostgreSQL (transactional)
  • Valkey state cleaned up
  • Tie-breaking logic defined and consistent
  • Players can return to lobby for rematch (status resets to 'waiting')

Notes

Use PostgreSQL transaction: db.transaction(async (tx) => { ... }). Reference: packages/db/src/models/termModel.ts.

## Context When a game ends, announce results and persist them. ## Files to change - `apps/api/src/ws/handlers/gameHandlers.ts` - `packages/db/src/models/lobbyModel.ts` — update lobby status, write scores. ## Behavior 1. Broadcast `game:finished` with players (userId, displayName, score, rank), winnerId. 2. Update `lobby_players.score` in PostgreSQL. 3. Update `lobbies.status` to 'finished'. 4. Clean up Valkey game state. 5. Optionally write to game_results for stats. ## Acceptance criteria - All players see final scores and winner - Results persisted in PostgreSQL (transactional) - Valkey state cleaned up - Tie-breaking logic defined and consistent - Players can return to lobby for rematch (status resets to 'waiting') ## Notes Use PostgreSQL transaction: `db.transaction(async (tx) => { ... })`. Reference: `packages/db/src/models/termModel.ts`.
forgejo-lila added the
multiplayer
label 2026-04-19 07:23:40 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: forgejo-lila/lila#46
No description provided.