Include player rating in history

This commit is contained in:
Trevor Slocum 2024-01-13 17:13:07 -08:00
parent eda9754b06
commit d3ac00eb34
4 changed files with 88 additions and 1 deletions

View file

@ -146,7 +146,13 @@ type HistoryMatch struct {
type EventHistory struct {
Event
Matches []*HistoryMatch
Matches []*HistoryMatch
CasualBackgammonSingle int
CasualBackgammonMulti int
CasualAceyDeuceySingle int
CasualAceyDeuceyMulti int
CasualTabulaSingle int
CasualTabulaMulti int
}
func DecodeEvent(message []byte) (interface{}, error) {

View file

@ -325,6 +325,70 @@ func confirmResetAccount(resetSalt string, passwordSalt string, id int, key stri
return newPassword, err
}
func accountByID(id int) (*account, error) {
dbLock.Lock()
defer dbLock.Unlock()
if db == nil || id <= 0 {
return nil, nil
}
tx, err := begin()
if err != nil {
return nil, err
}
defer tx.Commit(context.Background())
a := &account{
casual: &clientRating{},
competitive: &clientRating{},
}
var autoplay, highlight, pips, moves, flip, advanced int
err = tx.QueryRow(context.Background(), "SELECT id, email, username, password, autoplay, highlight, pips, moves, flip, advanced, speed, casual_backgammon_single, casual_backgammon_multi, casual_acey_single, casual_acey_multi, casual_tabula_single, casual_tabula_multi, rated_backgammon_single, rated_backgammon_multi, rated_acey_single, rated_acey_multi, rated_tabula_single, rated_tabula_multi FROM account WHERE id = $1", id).Scan(&a.id, &a.email, &a.username, &a.password, &autoplay, &highlight, &pips, &moves, &flip, &advanced, &a.speed, &a.casual.backgammonSingle, &a.casual.backgammonMulti, &a.casual.aceySingle, &a.casual.aceyMulti, &a.casual.tabulaSingle, &a.casual.tabulaMulti, &a.competitive.backgammonSingle, &a.competitive.backgammonMulti, &a.competitive.aceySingle, &a.competitive.aceyMulti, &a.competitive.tabulaSingle, &a.competitive.tabulaMulti)
if err != nil {
return nil, nil
}
a.autoplay = autoplay == 1
a.highlight = highlight == 1
a.pips = pips == 1
a.moves = moves == 1
a.flip = flip == 1
a.advanced = advanced == 1
return a, nil
}
func accountByUsername(username string) (*account, error) {
dbLock.Lock()
defer dbLock.Unlock()
if db == nil || len(strings.TrimSpace(username)) == 0 {
return nil, nil
}
tx, err := begin()
if err != nil {
return nil, err
}
defer tx.Commit(context.Background())
a := &account{
casual: &clientRating{},
competitive: &clientRating{},
}
var autoplay, highlight, pips, moves, flip, advanced int
err = tx.QueryRow(context.Background(), "SELECT id, email, username, password, autoplay, highlight, pips, moves, flip, advanced, speed, casual_backgammon_single, casual_backgammon_multi, casual_acey_single, casual_acey_multi, casual_tabula_single, casual_tabula_multi, rated_backgammon_single, rated_backgammon_multi, rated_acey_single, rated_acey_multi, rated_tabula_single, rated_tabula_multi FROM account WHERE username = $1", strings.ToLower(username)).Scan(&a.id, &a.email, &a.username, &a.password, &autoplay, &highlight, &pips, &moves, &flip, &advanced, &a.speed, &a.casual.backgammonSingle, &a.casual.backgammonMulti, &a.casual.aceySingle, &a.casual.aceyMulti, &a.casual.tabulaSingle, &a.casual.tabulaMulti, &a.competitive.backgammonSingle, &a.competitive.backgammonMulti, &a.competitive.aceySingle, &a.competitive.aceyMulti, &a.competitive.tabulaSingle, &a.competitive.tabulaMulti)
if err != nil {
return nil, nil
}
a.autoplay = autoplay == 1
a.highlight = highlight == 1
a.pips = pips == 1
a.moves = moves == 1
a.flip = flip == 1
a.advanced = advanced == 1
return a, nil
}
func loginAccount(passwordSalt string, username []byte, password []byte) (*account, error) {
dbLock.Lock()
defer dbLock.Unlock()

View file

@ -31,6 +31,14 @@ func confirmResetAccount(resetSalt string, passwordSalt string, id int, key stri
return "", nil
}
func accountByID(id int) (*account, error) {
return nil, nil
}
func accountByUsername(username string) (*account, error) {
return nil, nil
}
func loginAccount(passwordSalt string, username []byte, password []byte) (*account, error) {
return nil, nil
}

View file

@ -1171,6 +1171,15 @@ COMMANDS:
Matches: matches,
}
ev.Player = string(params[0])
a, err := accountByUsername(string(params[0]))
if err == nil && a != nil {
ev.CasualBackgammonSingle = a.casual.backgammonSingle / 100
ev.CasualBackgammonMulti = a.casual.backgammonMulti / 100
ev.CasualAceyDeuceySingle = a.casual.aceySingle / 100
ev.CasualAceyDeuceyMulti = a.casual.aceyMulti / 100
ev.CasualTabulaSingle = a.casual.tabulaSingle / 100
ev.CasualTabulaMulti = a.casual.tabulaMulti / 100
}
cmd.client.sendEvent(ev)
case bgammon.CommandDisconnect:
if clientGame != nil {