You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
2.0 KiB
Go

// Package events provides domain event interfaces and types for the KnowFoolery application.
package events
// EventType represents the type of a domain event.
type EventType string
// Game session events
const (
// GameSessionStarted is emitted when a new game session starts.
GameSessionStarted EventType = "game_session.started"
// GameSessionEnded is emitted when a game session ends.
GameSessionEnded EventType = "game_session.ended"
// GameSessionTimedOut is emitted when a game session times out.
GameSessionTimedOut EventType = "game_session.timed_out"
// AnswerSubmitted is emitted when a player submits an answer.
AnswerSubmitted EventType = "game_session.answer_submitted"
// HintRequested is emitted when a player requests a hint.
HintRequested EventType = "game_session.hint_requested"
// QuestionAnswered is emitted when a question is fully answered (correct or max attempts).
QuestionAnswered EventType = "game_session.question_answered"
)
// User events
const (
// UserRegistered is emitted when a new user registers.
UserRegistered EventType = "user.registered"
// UserEmailVerified is emitted when a user verifies their email.
UserEmailVerified EventType = "user.email_verified"
// UserDeleted is emitted when a user account is deleted.
UserDeleted EventType = "user.deleted"
)
// Question events
const (
// QuestionCreated is emitted when a new question is created.
QuestionCreated EventType = "question.created"
// QuestionUpdated is emitted when a question is updated.
QuestionUpdated EventType = "question.updated"
// QuestionDeleted is emitted when a question is deleted.
QuestionDeleted EventType = "question.deleted"
)
// Leaderboard events
const (
// ScoreUpdated is emitted when a score is updated on the leaderboard.
ScoreUpdated EventType = "leaderboard.score_updated"
// LeaderboardRefreshed is emitted when the leaderboard is refreshed.
LeaderboardRefreshed EventType = "leaderboard.refreshed"
)
// String returns the string representation of the event type.
func (t EventType) String() string {
return string(t)
}