Enha: not null fields in db

This commit is contained in:
Grail Finder
2025-07-02 09:36:38 +03:00
parent 95a55a8213
commit 8bf719ae4c
3 changed files with 19 additions and 24 deletions

View File

@ -2,20 +2,17 @@
CREATE TABLE rooms ( CREATE TABLE rooms (
id TEXT PRIMARY KEY, id TEXT PRIMARY KEY,
created_at TIMESTAMP NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
creator_name TEXT NOT NULL, creator_name TEXT NOT NULL,
team_turn TEXT NOT NULL DEFAULT '', team_turn TEXT NOT NULL DEFAULT '',
this_turn_limit INTEGER, this_turn_limit INTEGER NOT NULL DEFAULT 0,
opened_this_turn INTEGER, opened_this_turn INTEGER NOT NULL DEFAULT 0,
blue_counter INTEGER, blue_counter INTEGER NOT NULL DEFAULT 0,
red_counter INTEGER, red_counter INTEGER NOT NULL DEFAULT 0,
red_turn BOOLEAN, red_turn BOOLEAN NOT NULL DEFAULT FALSE,
mime_done BOOLEAN, mime_done BOOLEAN NOT NULL DEFAULT FALSE,
is_public BOOLEAN, is_running BOOLEAN NOT NULL DEFAULT FALSE,
is_running BOOLEAN, is_over BOOLEAN NOT NULL DEFAULT FALSE,
language TEXT NOT NULL DEFAULT '',
round_time INTEGER,
is_over BOOLEAN,
team_won TEXT NOT NULL DEFAULT '', team_won TEXT NOT NULL DEFAULT '',
room_pass TEXT NOT NULL DEFAULT '' room_pass TEXT NOT NULL DEFAULT ''
); );
@ -26,7 +23,7 @@ CREATE TABLE players (
username TEXT NOT NULL, username TEXT NOT NULL,
team TEXT NOT NULL DEFAULT '', -- 'red' or 'blue' team TEXT NOT NULL DEFAULT '', -- 'red' or 'blue'
role TEXT NOT NULL DEFAULT '', -- 'guesser' or 'mime' role TEXT NOT NULL DEFAULT '', -- 'guesser' or 'mime'
is_bot BOOLEAN DEFAULT FALSE, is_bot BOOLEAN NOT NULL DEFAULT FALSE,
FOREIGN KEY (room_id) REFERENCES rooms(id) FOREIGN KEY (room_id) REFERENCES rooms(id)
); );
@ -35,8 +32,8 @@ CREATE TABLE word_cards (
room_id TEXT NOT NULL, room_id TEXT NOT NULL,
word TEXT NOT NULL, word TEXT NOT NULL,
color TEXT NOT NULL DEFAULT '', color TEXT NOT NULL DEFAULT '',
revealed BOOLEAN DEFAULT FALSE, revealed BOOLEAN NOT NULL DEFAULT FALSE,
mime_view BOOLEAN DEFAULT FALSE, mime_view BOOLEAN NOT NULL DEFAULT FALSE,
FOREIGN KEY (room_id) REFERENCES rooms(id) FOREIGN KEY (room_id) REFERENCES rooms(id)
); );
@ -44,7 +41,7 @@ CREATE TABLE card_marks (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
card_id INTEGER NOT NULL, card_id INTEGER NOT NULL,
username TEXT NOT NULL, username TEXT NOT NULL,
active BOOLEAN DEFAULT TRUE, active BOOLEAN NOT NULL DEFAULT TRUE,
FOREIGN KEY (card_id) REFERENCES word_cards(id) FOREIGN KEY (card_id) REFERENCES word_cards(id)
); );
@ -57,7 +54,7 @@ CREATE TABLE actions (
word TEXT NOT NULL DEFAULT '', word TEXT NOT NULL DEFAULT '',
word_color TEXT NOT NULL DEFAULT '', word_color TEXT NOT NULL DEFAULT '',
number_associated TEXT NOT NULL DEFAULT '', -- for clues number_associated TEXT NOT NULL DEFAULT '', -- for clues
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (room_id) REFERENCES rooms(id) FOREIGN KEY (room_id) REFERENCES rooms(id)
); );
@ -67,6 +64,6 @@ CREATE TABLE settings (
language TEXT NOT NULL DEFAULT 'en', language TEXT NOT NULL DEFAULT 'en',
room_pass TEXT NOT NULL DEFAULT '', room_pass TEXT NOT NULL DEFAULT '',
turn_time INTEGER NOT NULL DEFAULT 60, -- seconds turn_time INTEGER NOT NULL DEFAULT 60, -- seconds
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (room_id) REFERENCES rooms(id) FOREIGN KEY (room_id) REFERENCES rooms(id)
); );

View File

@ -139,15 +139,12 @@ type Room struct {
RedCounter uint8 `db:"red_counter"` RedCounter uint8 `db:"red_counter"`
RedTurn bool `db:"red_turn"` RedTurn bool `db:"red_turn"`
MimeDone bool `db:"mime_done"` MimeDone bool `db:"mime_done"`
IsPublic bool `db:"is_public"`
IsRunning bool `json:"is_running" db:"is_running"` 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"` IsOver bool `db:"is_over"`
TeamWon UserTeam `db:"team_won"` TeamWon UserTeam `db:"team_won"`
RoomPass string `json:"room_pass" db:"room_pass"` RoomPass string `json:"room_pass" db:"room_pass"`
RoomLink string `db:"room_link"`
// fields not in db // fields not in db
RoomLink string `db:"-"`
ActionHistory []Action `db:"-"` ActionHistory []Action `db:"-"`
RedTeam Team `db:"-"` RedTeam Team `db:"-"`
BlueTeam Team `db:"-"` BlueTeam Team `db:"-"`
@ -384,6 +381,7 @@ type WordCard struct {
Mark []CardMark `json:"marks"` Mark []CardMark `json:"marks"`
} }
// table: settings
type GameSettings struct { type GameSettings struct {
Language string `json:"language" example:"en" form:"language" db:"language"` Language string `json:"language" example:"en" form:"language" db:"language"`
RoomPass string `json:"room_pass" db:"room_pass"` RoomPass string `json:"room_pass" db:"room_pass"`

View File

@ -32,7 +32,7 @@ func (p *RepoProvider) GetRoomByID(ctx context.Context, id string) (*models.Room
} }
func (p *RepoProvider) CreateRoom(ctx context.Context, r *models.Room) error { func (p *RepoProvider) CreateRoom(ctx context.Context, r *models.Room) error {
_, err := p.DB.ExecContext(ctx, `INSERT INTO rooms (id, created_at, creator_name, team_turn, this_turn_limit, opened_this_turn, blue_counter, red_counter, red_turn, mime_done, is_public, is_running, language, round_time, is_over, team_won, room_pass) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, r.ID, r.CreatedAt, r.CreatorName, r.TeamTurn, r.ThisTurnLimit, r.OpenedThisTurn, r.BlueCounter, r.RedCounter, r.RedTurn, r.MimeDone, r.IsPublic, r.IsRunning, r.Language, r.RoundTime, r.IsOver, r.TeamWon, r.RoomPass) _, err := p.DB.ExecContext(ctx, `INSERT INTO rooms (id, created_at, creator_name, team_turn, this_turn_limit, opened_this_turn, blue_counter, red_counter, red_turn, mime_done, is_running, round_time, is_over, team_won, room_pass) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, r.ID, r.CreatedAt, r.CreatorName, r.TeamTurn, r.ThisTurnLimit, r.OpenedThisTurn, r.BlueCounter, r.RedCounter, r.RedTurn, r.MimeDone, r.IsRunning, r.RoundTime, r.IsOver, r.TeamWon, r.RoomPass)
return err return err
} }
@ -42,6 +42,6 @@ func (p *RepoProvider) DeleteRoomByID(ctx context.Context, id string) error {
} }
func (p *RepoProvider) UpdateRoom(ctx context.Context, r *models.Room) error { func (p *RepoProvider) UpdateRoom(ctx context.Context, r *models.Room) error {
_, err := p.DB.ExecContext(ctx, `UPDATE rooms SET team_turn = ?, this_turn_limit = ?, opened_this_turn = ?, blue_counter = ?, red_counter = ?, red_turn = ?, mime_done = ?, is_public = ?, is_running = ?, language = ?, round_time = ?, is_over = ?, team_won = ?, room_pass = ? WHERE id = ?`, r.TeamTurn, r.ThisTurnLimit, r.OpenedThisTurn, r.BlueCounter, r.RedCounter, r.RedTurn, r.MimeDone, r.IsPublic, r.IsRunning, r.Language, r.RoundTime, r.IsOver, r.TeamWon, r.RoomPass, r.ID) _, err := p.DB.ExecContext(ctx, `UPDATE rooms SET team_turn = ?, this_turn_limit = ?, opened_this_turn = ?, blue_counter = ?, red_counter = ?, red_turn = ?, mime_done = ?, is_running = ?, round_time = ?, is_over = ?, team_won = ?, room_pass = ? WHERE id = ?`, r.TeamTurn, r.ThisTurnLimit, r.OpenedThisTurn, r.BlueCounter, r.RedCounter, r.RedTurn, r.MimeDone, r.IsRunning, r.RoundTime, r.IsOver, r.TeamWon, r.RoomPass, r.ID)
return err return err
} }