itMerge Submit/Refresh as a single SQL query - scoreboard - Interactive scoreboard for CTF-like games Err z3bra.org 70 hgit clone git://git.z3bra.org/scoreboard.git URL:git://git.z3bra.org/scoreboard.git z3bra.org 70 1Log /scm/scoreboard/log.gph z3bra.org 70 1Files /scm/scoreboard/files.gph z3bra.org 70 1Refs /scm/scoreboard/refs.gph z3bra.org 70 i--- Err z3bra.org 70 1commit 55681064d723f99c219f287a6c65cf977338e616 /scm/scoreboard/commit/55681064d723f99c219f287a6c65cf977338e616.gph z3bra.org 70 1parent d3aeebcb5ccad3ef7c0d1febb9525189d90ed1c0 /scm/scoreboard/commit/d3aeebcb5ccad3ef7c0d1febb9525189d90ed1c0.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:contact@z3bra.org z3bra.org 70 iDate: Wed, 2 Oct 2024 23:06:41 +0200 Err z3bra.org 70 i Err z3bra.org 70 iMerge Submit/Refresh as a single SQL query Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M player.go | 39 +++++-------------------------- Err z3bra.org 70 i Err z3bra.org 70 i1 file changed, 6 insertions(+), 33 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/player.go b/player.go /scm/scoreboard/file/player.go.gph z3bra.org 70 it@@ -129,30 +129,6 @@ func (p *Player) Fetch() error { Err z3bra.org 70 i return nil Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i-func (p *Player) Refresh(ts int64) error { Err z3bra.org 70 i- var err error Err z3bra.org 70 i- Err z3bra.org 70 i- p.flags, err = db_get_user_flags(p.db, p.name) Err z3bra.org 70 i- if err != nil { Err z3bra.org 70 i- return err Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- p.score, err = db_get_user_score(p.db, p.name) Err z3bra.org 70 i- if err != nil { Err z3bra.org 70 i- return err Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- query := `UPDATE user SET ts = ? WHERE name = ?;` Err z3bra.org 70 i- _, err = p.db.Exec(query, ts, p.name) Err z3bra.org 70 i- if err != nil { Err z3bra.org 70 i- return err Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- p.ts = ts Err z3bra.org 70 i- Err z3bra.org 70 i- return nil Err z3bra.org 70 i-} Err z3bra.org 70 i- Err z3bra.org 70 i func (p *Player) Rank() int { Err z3bra.org 70 i rank, err := db_get_user_rank(p.db, p.name) Err z3bra.org 70 i if err != nil { Err z3bra.org 70 it@@ -240,24 +216,21 @@ func (p *Player) HasFlag(flag Flag) bool { Err z3bra.org 70 i Err z3bra.org 70 i func (p *Player) Submit(flag Flag) error { Err z3bra.org 70 i var err error Err z3bra.org 70 i- var ts int64 Err z3bra.org 70 i Err z3bra.org 70 i if p.HasFlag(flag) { Err z3bra.org 70 i return errors.New("Flag already submitted") Err z3bra.org 70 i } else { Err z3bra.org 70 i- query := `INSERT INTO score(name,flag) VALUES(?,?);` Err z3bra.org 70 i- _, err = p.db.Exec(query, p.name, flag.value) Err z3bra.org 70 i+ p.ts = time.Now().Unix() Err z3bra.org 70 i+ query := ` Err z3bra.org 70 i+ INSERT INTO score(name,flag) VALUES(?,?); Err z3bra.org 70 i+ UPDATE user SET ts = ? WHERE name = ?; Err z3bra.org 70 i+ ` Err z3bra.org 70 i+ _, err = p.db.Exec(query, p.name, flag.value, p.ts, p.name) Err z3bra.org 70 i if err != nil { Err z3bra.org 70 i return err Err z3bra.org 70 i } Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i- // update user status in database Err z3bra.org 70 i- err = p.Refresh(ts) Err z3bra.org 70 i- if err != nil { Err z3bra.org 70 i- return err Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i return nil Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 .