Add data models
This commit is contained in:
79
internal/models/models.go
Normal file
79
internal/models/models.go
Normal file
@@ -0,0 +1,79 @@
|
||||
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"`
|
||||
}
|
||||
Reference in New Issue
Block a user