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