package models import "time" // Player represents a participant in the drinking game. type Player struct { ID int `json:"id"` Name string `json:"name"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // Game represents a Dark Souls game variant. type Game struct { ID int `json:"id"` Name string `json:"name"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // Boss represents a boss in a Dark Souls game. type Boss struct { ID int `json:"id"` Name string `json:"name"` GameID int `json:"game_id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // Drink represents a type of alcoholic beverage. type Drink struct { ID int `json:"id"` Name string `json:"name"` Type string `json:"type"` // e.g., "beer", "shot", "cocktail" CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // EventType represents the type of event that occurred during a session. type EventType string const ( EventTypeStart EventType = "start" EventTypeEnd EventType = "end" EventTypeBossDefeated EventType = "boss_defeated" EventTypeDeath EventType = "death" ) // Session represents a game session with multiple players. type Session struct { ID int `json:"id"` GameID int `json:"game_id"` StartedAt time.Time `json:"started_at"` EndedAt *time.Time `json:"ended_at,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // Event represents an event that occurred during a session. type Event struct { ID int `json:"id"` SessionID int `json:"session_id"` EventType EventType `json:"event_type"` PlayerID int `json:"player_id"` BossID *int `json:"boss_id,omitempty"` Timestamp time.Time `json:"timestamp"` Notes string `json:"notes,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // PenaltyDrink represents a drink consumed as a penalty. type PenaltyDrink struct { ID int `json:"id"` EventID int `json:"event_id"` PlayerID int `json:"player_id"` DrinkID int `json:"drink_id"` CreatedAt time.Time `json:"created_at"` }