Feat: room and actions repos

This commit is contained in:
Grail Finder
2025-07-01 12:49:46 +03:00
parent 42348ff625
commit 83d3a19d05
6 changed files with 171 additions and 50 deletions

View File

@ -70,33 +70,33 @@ type CardMark struct {
type Room struct {
ID string `json:"id" db:"id"`
CreatedAt time.Time `json:"created_at" db:"created_at"` // limit?
RoomLink string
CreatorName string `json:"creator_name"`
ActionHistory []Action
TeamTurn UserTeam
RedTeam Team
BlueTeam Team
Cards []WordCard
ThisTurnLimit uint8 // how many cards guessers can open this turn
OpenedThisTurn uint8 // how many cards have been opened this turn
WCMap map[string]WordColor
BotMap map[string]BotPlayer // key is bot name
BlueCounter uint8
RedCounter uint8
RedTurn bool // false is blue turn
MimeDone bool
IsPublic bool
IsRunning bool `json:"is_running"`
Language string `json:"language" example:"en" form:"language"`
RoundTime int32 `json:"round_time"`
IsOver bool
TeamWon UserTeam // blue | red
//
Mark CardMark // card is marked
// needed for debug
LogJournal []string
Settings GameSettings
CreatedAt time.Time `json:"created_at" db:"created_at"`
CreatorName string `json:"creator_name" db:"creator_name"`
TeamTurn UserTeam `db:"team_turn"`
ThisTurnLimit uint8 `db:"this_turn_limit"`
OpenedThisTurn uint8 `db:"opened_this_turn"`
BlueCounter uint8 `db:"blue_counter"`
RedCounter uint8 `db:"red_counter"`
RedTurn bool `db:"red_turn"`
MimeDone bool `db:"mime_done"`
IsPublic bool `db:"is_public"`
IsRunning bool `json:"is_running" db:"is_running"`
Language string `json:"language" example:"en" form:"language" db:"language"`
RoundTime uint32 `json:"round_time" db:"round_time"`
IsOver bool `db:"is_over"`
TeamWon UserTeam `db:"team_won"`
RoomPass string `json:"room_pass" db:"room_pass"`
// fields not in db
RoomLink string `db:"-"`
ActionHistory []Action `db:"-"`
RedTeam Team `db:"-"`
BlueTeam Team `db:"-"`
Cards []WordCard `db:"-"`
WCMap map[string]WordColor `db:"-"`
BotMap map[string]BotPlayer `db:"-"`
Mark CardMark `db:"-"`
LogJournal []string `db:"-"`
Settings GameSettings `db:"-"`
}
func (r *Room) ClearMarks() {
@ -325,10 +325,10 @@ type WordCard struct {
}
type GameSettings struct {
Language string `json:"language" example:"en" form:"language"`
RoomPass string `json:"room_pass"`
TurnSecondsLeft uint32
RoundTime uint32
Language string `json:"language" example:"en" form:"language" db:"language"`
RoomPass string `json:"room_pass" db:"room_pass"`
TurnSecondsLeft uint32 `db:"-"`
RoundTime uint32 `json:"round_time" db:"round_time"`
}
// =====
@ -343,19 +343,14 @@ type RoomReq struct {
func (rr *RoomReq) CreateRoom(creator string) *Room {
roomID := xid.New().String()
settings := GameSettings{
Language: rr.Language,
RoomPass: rr.RoomPass,
RoundTime: rr.RoundTime,
}
return &Room{
// RoomName: ,
ID: roomID,
CreatedAt: time.Now(),
// PlayerList: []string{creator},
ID: roomID,
CreatedAt: time.Now(),
CreatorName: creator,
Language: rr.Language,
RoundTime: rr.RoundTime,
RoomPass: rr.RoomPass,
BotMap: make(map[string]BotPlayer),
Settings: settings,
}
}