itStore flag as a struct rather than value - 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 6cc78df0825869cb50d130baee6429174c979827 /scm/scoreboard/commit/6cc78df0825869cb50d130baee6429174c979827.gph z3bra.org 70 1parent 8a7650dfacce3928c15355cff32ba81179141352 /scm/scoreboard/commit/8a7650dfacce3928c15355cff32ba81179141352.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:contact@z3bra.org z3bra.org 70 iDate: Thu, 26 Sep 2024 11:07:55 +0200 Err z3bra.org 70 i Err z3bra.org 70 iStore flag as a struct rather than value Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M db.go | 12 ++++++++++++ Err z3bra.org 70 i M main.go | 8 ++++---- Err z3bra.org 70 i M player.go | 8 ++++---- Err z3bra.org 70 i Err z3bra.org 70 i3 files changed, 20 insertions(+), 8 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/db.go b/db.go /scm/scoreboard/file/db.go.gph z3bra.org 70 it@@ -100,6 +100,18 @@ func db_calculate_user_score(db *sql.DB, name string) (int, error) { Err z3bra.org 70 i return count, err Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i+func db_get_flag(db *sql.DB, flag string) (Flag, error) { Err z3bra.org 70 i+ var res Flag Err z3bra.org 70 i+ Err z3bra.org 70 i+ query := `SELECT rowid,value,badge,score FROM flag WHERE value = ?;` Err z3bra.org 70 i+ Err z3bra.org 70 i+ row := db.QueryRow(query, flag) Err z3bra.org 70 i+ err := row.Scan(&res.id, &res.value, &res.badge, &res.score) Err z3bra.org 70 i+ Err z3bra.org 70 i+ return res, err Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+ Err z3bra.org 70 i func db_get_flags(db *sql.DB) ([]Flag, error) { Err z3bra.org 70 i query := `SELECT rowid,value,badge,score FROM flag ORDER BY score;` Err z3bra.org 70 i Err z3bra.org 70 1diff --git a/main.go b/main.go /scm/scoreboard/file/main.go.gph z3bra.org 70 it@@ -48,7 +48,7 @@ type Flag struct { Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i type Application struct { Err z3bra.org 70 i- flag string Err z3bra.org 70 i+ flag Flag Err z3bra.org 70 i flag_ref []Flag Err z3bra.org 70 i db *sql.DB Err z3bra.org 70 i app *tview.Application Err z3bra.org 70 it@@ -166,7 +166,7 @@ func main() { Err z3bra.org 70 i Err z3bra.org 70 i scoreboard.flag_ref, err = db_get_flags(scoreboard.db) Err z3bra.org 70 i Err z3bra.org 70 i- scoreboard.flag = "" Err z3bra.org 70 i+ scoreboard.flag = Flag{} Err z3bra.org 70 i scoreboard.html = *html Err z3bra.org 70 i scoreboard.app = tview.NewApplication() Err z3bra.org 70 i scoreboard.pages = tview.NewPages() Err z3bra.org 70 it@@ -207,11 +207,11 @@ func main() { Err z3bra.org 70 i Err z3bra.org 70 i /* anything not a command is treated as a flag */ Err z3bra.org 70 i default: Err z3bra.org 70 i- if flagid(args[0]) < 0 { Err z3bra.org 70 i+ scoreboard.flag, err = db_get_flag(scoreboard.db, args[0]) Err z3bra.org 70 i+ if err != nil { Err z3bra.org 70 i fmt.Println("Incorrect flag") Err z3bra.org 70 i return Err z3bra.org 70 i } Err z3bra.org 70 i- scoreboard.flag = args[0] Err z3bra.org 70 i scoreboard.pages.SwitchToPage("token") Err z3bra.org 70 i } 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@@ -171,15 +171,15 @@ func (p *Player) Exists() bool { Err z3bra.org 70 i return (count > 0) Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i-func (p *Player) HasFlag(flag string) bool { Err z3bra.org 70 i+func (p *Player) HasFlag(flag Flag) bool { Err z3bra.org 70 i var count int Err z3bra.org 70 i query := `SELECT count(*) FROM score WHERE name = ? AND flag = ?;` Err z3bra.org 70 i- row := p.db.QueryRow(query, p.name, flag) Err z3bra.org 70 i+ row := p.db.QueryRow(query, p.name, flag.value) Err z3bra.org 70 i row.Scan(&count) Err z3bra.org 70 i return (count > 0) Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i-func (p *Player) Submit(flag string) error { 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 it@@ -187,7 +187,7 @@ func (p *Player) Submit(flag string) error { 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) Err z3bra.org 70 i+ _, err = p.db.Exec(query, p.name, flag.value) Err z3bra.org 70 i if err != nil { Err z3bra.org 70 i return err Err z3bra.org 70 i } Err z3bra.org 70 .