feat(multiplayer): enforce proposal timeout cooldowns

This commit is contained in:
Josh Creek
2026-09-01 19:32:38 +01:00
parent 455055c67c
commit 957bb65a26
3 changed files with 56 additions and 4 deletions
@@ -20,6 +20,7 @@ func TestProposalRecoverySQLBindsParticipantAndExpiresAtReadBoundary(t *testing.
ProposalExpireRequeueSQL: {"SET state = 'QUEUED'", "state = 'PROPOSED'", "state = 'EXPIRED'"},
ProposalCooldownEventsSQL: {"kind IN ('PROPOSAL_DECLINED', 'PROPOSAL_TIMEOUT')", "starts_at >= $3", "ORDER BY starts_at"},
ProposalCooldownInsertSQL: {"INSERT INTO penalties", "starts_at", "ends_at", "ON CONFLICT (penalty_id) DO NOTHING"},
ProposalTimedOutParticipantsSQL: {"response = 'TIMED_OUT'", "responded_at = $2", "ORDER BY player_id"},
OpenProposalForCancelledTicketSQL: {"proposal_participants", "state = 'OPEN'"},
} {
for _, fragment := range fragments {