Add game deletion with authorization check

- Add Delete method to GameStore and Persister interface
- Add delete button to game list on home page
- Verify user owns game before allowing deletion
- Use status constants instead of magic numbers
- Remove unused variable in persister
This commit is contained in:
Ryan Hamamura
2026-01-14 17:44:09 -10:00
parent d96f7dcc29
commit 5f452914f8
5 changed files with 91 additions and 22 deletions

View File

@@ -19,7 +19,7 @@ func NewGamePersister(q *gen.Queries) *GamePersister {
func (p *GamePersister) SaveGame(g *game.Game) error {
ctx := context.Background()
existing, err := p.queries.GetGame(ctx, g.ID)
_, err := p.queries.GetGame(ctx, g.ID)
if err == sql.ErrNoRows {
_, err = p.queries.CreateGame(ctx, gen.CreateGameParams{
ID: g.ID,
@@ -43,7 +43,6 @@ func (p *GamePersister) SaveGame(g *game.Game) error {
winningCells = sql.NullString{String: wc, Valid: true}
}
_ = existing
return p.queries.UpdateGame(ctx, gen.UpdateGameParams{
Board: g.BoardToJSON(),
CurrentTurn: int64(g.CurrentTurn),
@@ -124,3 +123,8 @@ func (p *GamePersister) LoadGamePlayers(gameID string) ([]*game.Player, error) {
return players, nil
}
func (p *GamePersister) DeleteGame(id string) error {
ctx := context.Background()
return p.queries.DeleteGame(ctx, id)
}