- Add missing bcc argument to NewEmail call in pkg/email/fetch.go - Upgrade github.com/a-h/templ from v0.3.833 to v0.3.1020 to match generator - Add player management routes (add/delete/edit) and playershandler - Update templates and loaddata with pending changes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package data
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
func ReadSessionData() (Session, error) {
|
|
var session Session
|
|
data, err := os.ReadFile("players.json")
|
|
if err != nil {
|
|
return session, err
|
|
}
|
|
err = json.Unmarshal(data, &session)
|
|
|
|
if err == nil {
|
|
for i, p := range session.Players {
|
|
session.Players[i].ToggleUrl = "/sessioninfo?playerName=" + p.Name + "&playerAttending=toggle"
|
|
}
|
|
}
|
|
|
|
return session, err
|
|
}
|
|
|
|
func PersistSession(session Session) error {
|
|
// Convert the object to JSON
|
|
jsonData, err := json.MarshalIndent(session, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Write JSON data to file
|
|
err = os.WriteFile("players.json", jsonData, 0644)
|
|
return err
|
|
}
|
|
|
|
func AddPlayer(session Session, p Player) error {
|
|
session.Players = append(session.Players, p)
|
|
return PersistSession(session)
|
|
}
|
|
|
|
func DeletePlayer(session Session, name string) error {
|
|
players := make([]Player, 0, len(session.Players))
|
|
for _, p := range session.Players {
|
|
if p.Name != name {
|
|
players = append(players, p)
|
|
}
|
|
}
|
|
session.Players = players
|
|
return PersistSession(session)
|
|
}
|
|
|
|
func UpdatePlayer(session Session, originalName string, updated Player) error {
|
|
for i, p := range session.Players {
|
|
if p.Name == originalName {
|
|
session.Players[i] = updated
|
|
return PersistSession(session)
|
|
}
|
|
}
|
|
return fmt.Errorf("player %q not found", originalName)
|
|
}
|