Files
estus-shots/internal/models/models.go
2025-10-15 11:14:56 +02:00

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"`
}