areweplaying/pkg/data/loaddata.go
Harry Culpan 04f687a278 Fix build errors and upgrade templ to v0.3.1020
- 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>
2026-06-29 20:05:53 -04:00

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)
}