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

@@ -21,6 +21,7 @@ type Persister interface {
LoadGame(id string) (*Game, error)
SaveGamePlayer(gameID string, player *Player, slot int) error
LoadGamePlayers(gameID string) ([]*Player, error)
DeleteGame(id string) error
}
type GameStore struct {
@@ -99,6 +100,21 @@ func (gs *GameStore) Get(id string) (*GameInstance, bool) {
return gi, true
}
func (gs *GameStore) Delete(id string) error {
gs.gamesMu.Lock()
gi, ok := gs.games[id]
if ok {
delete(gs.games, id)
close(gi.done)
}
gs.gamesMu.Unlock()
if gs.persister != nil {
return gs.persister.DeleteGame(id)
}
return nil
}
func GenerateID(size int) string {
b := make([]byte, size)
rand.Read(b)