80 lines
2.3 KiB
Go
80 lines
2.3 KiB
Go
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"`
|
|
}
|