MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin / updateELORate

Function updateELORate

plugin/chess/core.go:577–607  ·  view source on GitHub ↗

updateELORate 更新 elo 等级分 当数据库中没有玩家的等级分信息时, 自动新建一条记录

(whiteUin, blackUin int64, whiteName, blackName string, whiteScore, blackScore float64, dbService *chessDBService)

Source from the content-addressed store, hash-verified

575// updateELORate 更新 elo 等级分
576// 当数据库中没有玩家的等级分信息时, 自动新建一条记录
577func updateELORate(whiteUin, blackUin int64, whiteName, blackName string, whiteScore, blackScore float64, dbService *chessDBService) error {
578 whiteRate, err := dbService.getELORateByUin(whiteUin)
579 if err != nil {
580 if err != gorm.ErrRecordNotFound {
581 return err
582 }
583 // create white elo
584 if err := dbService.createELO(whiteUin, whiteName, eloDefault); err != nil {
585 return err
586 }
587 whiteRate = eloDefault
588 }
589 blackRate, err := dbService.getELORateByUin(blackUin)
590 if err != nil {
591 if err != gorm.ErrRecordNotFound {
592 return err
593 }
594 // create black elo
595 if err := dbService.createELO(blackUin, blackName, eloDefault); err != nil {
596 return err
597 }
598 blackRate = eloDefault
599 }
600 whiteRate, blackRate = calculateNewRate(whiteRate, blackRate, whiteScore, blackScore)
601 // 更新白棋玩家的 ELO 等级分
602 if err := dbService.updateELOByUin(whiteUin, whiteName, whiteRate); err != nil {
603 return err
604 }
605 // 更新黑棋玩家的 ELO 等级分
606 return dbService.updateELOByUin(blackUin, blackName, blackRate)
607}
608
609// getChessString 获取 PGN 字符串
610func getChessString(room chessRoom) string {

Callers 1

getELOStringFunction · 0.85

Calls 4

calculateNewRateFunction · 0.85
getELORateByUinMethod · 0.80
createELOMethod · 0.80
updateELOByUinMethod · 0.80

Tested by

no test coverage detected