// 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) }