feat(multiplayer): enforce proposal decline cooldowns

This commit is contained in:
Josh Creek
2026-09-01 19:30:45 +01:00
parent da92be73ef
commit 455055c67c
6 changed files with 68 additions and 0 deletions
@@ -18,6 +18,8 @@ func TestProposalRecoverySQLBindsParticipantAndExpiresAtReadBoundary(t *testing.
ProposalRevisionBumpSQL: {"revision = revision + 1", "state = 'OPEN'"},
ProposalDeclineRequeueSQL: {"SET state = 'QUEUED'", "state = 'PROPOSED'", "proposal_participants"},
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"},
OpenProposalForCancelledTicketSQL: {"proposal_participants", "state = 'OPEN'"},
} {
for _, fragment := range fragments {