feat(multiplayer): dispatch completed result events

This commit is contained in:
Josh Creek
2026-09-01 15:43:32 +01:00
parent 9ec707674a
commit f3b56f70e3
7 changed files with 115 additions and 1 deletions
+5
View File
@@ -12,6 +12,8 @@ func TestOutboxSQLPreservesReplayableOrderedReadAndPublishAck(t *testing.T) {
for query, fragments := range map[string][]string{
OutboxUnpublishedSelectSQL: {"published_at IS NULL", "ORDER BY created_at, event_id", "LIMIT $1"},
OutboxUnpublishedProposalSelectSQL: {"published_at IS NULL", "event_type = 'proposal_changed'", "ORDER BY created_at, event_id", "LIMIT $1"},
OutboxUnpublishedResultSelectSQL: {"published_at IS NULL", "event_type = 'match_completed'", "ORDER BY created_at, event_id", "LIMIT $1"},
MatchParticipantIDsSQL: {"SELECT player_id", "match_participants", "match_id = $1", "ORDER BY player_id"},
OutboxMarkPublishedSQL: {"published_at = $2", "event_id = $1", "published_at IS NULL"},
} {
for _, fragment := range fragments {
@@ -67,4 +69,7 @@ func TestOutboxAdaptersRejectUnsafeArgumentsWithoutDatabase(t *testing.T) {
if err := MarkOutboxPublished(nil, nil, "", time.Unix(1000, 0)); err == nil {
t.Fatal("empty event acknowledgement accepted")
}
if _, err := ReadMatchParticipantIDs(nil, nil, ""); err == nil {
t.Fatal("invalid participant read arguments accepted")
}
}