mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-12 21:52:02 +00:00
fix(multiplayer): release innocent no-show participants
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user