fix(multiplayer): release innocent no-show participants

This commit is contained in:
Josh Creek
2026-09-01 16:39:46 +01:00
parent 334d8a26ac
commit 8c2dc66c7c
3 changed files with 12 additions and 0 deletions
+9
View File
@@ -37,6 +37,10 @@ const initialConnectDeactivateSQL = `UPDATE match_participants
SET participation_active = FALSE, abandoned_at = $3
WHERE match_id = $1 AND player_id = ANY($2)`
const initialConnectReleaseAllSQL = `UPDATE match_participants
SET participation_active = FALSE
WHERE match_id = $1 AND participation_active`
const initialConnectTicketNoShowSQL = `UPDATE queue_tickets q
SET state = 'FAILED', revision = revision + 1
FROM match_participants mp
@@ -122,6 +126,11 @@ func ApplyInitialConnectPlan(ctx context.Context, db *sql.DB, matchID, idempoten
if err := validateInitialConnectPlan(plan, participants, domain.Playlist(playlist)); err != nil {
return err
}
if plan.Action == domain.InitialConnectCancel {
if _, err := tx.ExecContext(ctx, initialConnectReleaseAllSQL, matchID); err != nil {
return err
}
}
if _, err := tx.ExecContext(ctx, initialConnectDeactivateSQL, matchID, initialConnectNoShowIDs(plan), now); err != nil {
return err
}