diff options
| -rw-r--r-- | backend/handlers/home.go | 9 | ||||
| -rw-r--r-- | backend/handlers/map.go | 42 | ||||
| -rw-r--r-- | backend/models/models.go | 11 |
3 files changed, 30 insertions, 32 deletions
diff --git a/backend/handlers/home.go b/backend/handlers/home.go index 53be1de..eb3912c 100644 --- a/backend/handlers/home.go +++ b/backend/handlers/home.go | |||
| @@ -68,7 +68,7 @@ func Rankings(c *gin.Context) { | |||
| 68 | ranking := models.UserRanking{} | 68 | ranking := models.UserRanking{} |
| 69 | var currentCount int | 69 | var currentCount int |
| 70 | var totalCount int | 70 | var totalCount int |
| 71 | err = rows.Scan(&ranking.UserID, &ranking.UserName, ¤tCount, &totalCount, &ranking.TotalScore) | 71 | err = rows.Scan(&ranking.User.SteamID, &ranking.User.UserName, ¤tCount, &totalCount, &ranking.TotalScore) |
| 72 | if err != nil { | 72 | if err != nil { |
| 73 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | 73 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) |
| 74 | return | 74 | return |
| @@ -100,7 +100,7 @@ func Rankings(c *gin.Context) { | |||
| 100 | ranking := models.UserRanking{} | 100 | ranking := models.UserRanking{} |
| 101 | var currentCount int | 101 | var currentCount int |
| 102 | var totalCount int | 102 | var totalCount int |
| 103 | err = rows.Scan(&ranking.UserID, &ranking.UserName, ¤tCount, &totalCount, &ranking.TotalScore) | 103 | err = rows.Scan(&ranking.User.SteamID, &ranking.User.UserName, ¤tCount, &totalCount, &ranking.TotalScore) |
| 104 | if err != nil { | 104 | if err != nil { |
| 105 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | 105 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) |
| 106 | return | 106 | return |
| @@ -113,11 +113,10 @@ func Rankings(c *gin.Context) { | |||
| 113 | // Has both so they are qualified for overall ranking | 113 | // Has both so they are qualified for overall ranking |
| 114 | for _, spRanking := range response.Singleplayer { | 114 | for _, spRanking := range response.Singleplayer { |
| 115 | for _, mpRanking := range response.Multiplayer { | 115 | for _, mpRanking := range response.Multiplayer { |
| 116 | if spRanking.UserID == mpRanking.UserID { | 116 | if spRanking.User.SteamID == mpRanking.User.SteamID { |
| 117 | totalScore := spRanking.TotalScore + mpRanking.TotalScore | 117 | totalScore := spRanking.TotalScore + mpRanking.TotalScore |
| 118 | overallRanking := models.UserRanking{ | 118 | overallRanking := models.UserRanking{ |
| 119 | UserID: spRanking.UserID, | 119 | User: spRanking.User, |
| 120 | UserName: spRanking.UserName, | ||
| 121 | TotalScore: totalScore, | 120 | TotalScore: totalScore, |
| 122 | } | 121 | } |
| 123 | response.Overall = append(response.Overall, overallRanking) | 122 | response.Overall = append(response.Overall, overallRanking) |
diff --git a/backend/handlers/map.go b/backend/handlers/map.go index 0a0206e..1d9cee8 100644 --- a/backend/handlers/map.go +++ b/backend/handlers/map.go | |||
| @@ -31,31 +31,25 @@ type ChapterMapsResponse struct { | |||
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | type RecordSingleplayer struct { | 33 | type RecordSingleplayer struct { |
| 34 | Placement int `json:"placement"` | 34 | Placement int `json:"placement"` |
| 35 | RecordID int `json:"record_id"` | 35 | RecordID int `json:"record_id"` |
| 36 | ScoreCount int `json:"score_count"` | 36 | ScoreCount int `json:"score_count"` |
| 37 | ScoreTime int `json:"score_time"` | 37 | ScoreTime int `json:"score_time"` |
| 38 | UserID string `json:"user_id"` | 38 | User models.UserShortWithAvatar `json:"user"` |
| 39 | UserName string `json:"user_name"` | 39 | DemoID string `json:"demo_id"` |
| 40 | UserAvatar string `json:"user_avatar"` | 40 | RecordDate time.Time `json:"record_date"` |
| 41 | DemoID string `json:"demo_id"` | ||
| 42 | RecordDate time.Time `json:"record_date"` | ||
| 43 | } | 41 | } |
| 44 | 42 | ||
| 45 | type RecordMultiplayer struct { | 43 | type RecordMultiplayer struct { |
| 46 | Placement int `json:"placement"` | 44 | Placement int `json:"placement"` |
| 47 | RecordID int `json:"record_id"` | 45 | RecordID int `json:"record_id"` |
| 48 | ScoreCount int `json:"score_count"` | 46 | ScoreCount int `json:"score_count"` |
| 49 | ScoreTime int `json:"score_time"` | 47 | ScoreTime int `json:"score_time"` |
| 50 | HostID string `json:"host_id"` | 48 | Host models.UserShortWithAvatar `json:"host"` |
| 51 | HostName string `json:"host_name"` | 49 | Partner models.UserShortWithAvatar `json:"partner"` |
| 52 | HostAvatar string `json:"host_avatar"` | 50 | HostDemoID string `json:"host_demo_id"` |
| 53 | PartnerID string `json:"partner_id"` | 51 | PartnerDemoID string `json:"partner_demo_id"` |
| 54 | PartnerName string `json:"partner_name"` | 52 | RecordDate time.Time `json:"record_date"` |
| 55 | PartnerAvatar string `json:"partner_avatar"` | ||
| 56 | HostDemoID string `json:"host_demo_id"` | ||
| 57 | PartnerDemoID string `json:"partner_demo_id"` | ||
| 58 | RecordDate time.Time `json:"record_date"` | ||
| 59 | } | 53 | } |
| 60 | 54 | ||
| 61 | // GET Map Summary | 55 | // GET Map Summary |
| @@ -195,7 +189,7 @@ func FetchMapLeaderboards(c *gin.Context) { | |||
| 195 | ties := 0 | 189 | ties := 0 |
| 196 | for rows.Next() { | 190 | for rows.Next() { |
| 197 | var record RecordMultiplayer | 191 | var record RecordMultiplayer |
| 198 | err := rows.Scan(&record.RecordID, &record.HostID, &record.HostName, &record.HostAvatar, &record.PartnerID, &record.PartnerName, &record.PartnerAvatar, &record.ScoreCount, &record.ScoreTime, &record.HostDemoID, &record.PartnerDemoID, &record.RecordDate) | 192 | err := rows.Scan(&record.RecordID, &record.Host.SteamID, &record.Host.UserName, &record.Host.AvatarLink, &record.Partner.SteamID, &record.Partner.UserName, &record.Partner.AvatarLink, &record.ScoreCount, &record.ScoreTime, &record.HostDemoID, &record.PartnerDemoID, &record.RecordDate) |
| 199 | if err != nil { | 193 | if err != nil { |
| 200 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | 194 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) |
| 201 | return | 195 | return |
| @@ -230,7 +224,7 @@ func FetchMapLeaderboards(c *gin.Context) { | |||
| 230 | ties := 0 | 224 | ties := 0 |
| 231 | for rows.Next() { | 225 | for rows.Next() { |
| 232 | var record RecordSingleplayer | 226 | var record RecordSingleplayer |
| 233 | err := rows.Scan(&record.RecordID, &record.UserID, &record.UserName, &record.UserAvatar, &record.ScoreCount, &record.ScoreTime, &record.DemoID, &record.RecordDate) | 227 | err := rows.Scan(&record.RecordID, &record.User.SteamID, &record.User.UserName, &record.User.AvatarLink, &record.ScoreCount, &record.ScoreTime, &record.DemoID, &record.RecordDate) |
| 234 | if err != nil { | 228 | if err != nil { |
| 235 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | 229 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) |
| 236 | return | 230 | return |
diff --git a/backend/models/models.go b/backend/models/models.go index b706d25..2d54295 100644 --- a/backend/models/models.go +++ b/backend/models/models.go | |||
| @@ -33,6 +33,12 @@ type UserShort struct { | |||
| 33 | UserName string `json:"user_name"` | 33 | UserName string `json:"user_name"` |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | type UserShortWithAvatar struct { | ||
| 37 | SteamID string `json:"steam_id"` | ||
| 38 | UserName string `json:"user_name"` | ||
| 39 | AvatarLink string `json:"avatar_link"` | ||
| 40 | } | ||
| 41 | |||
| 36 | type Map struct { | 42 | type Map struct { |
| 37 | ID int `json:"id"` | 43 | ID int `json:"id"` |
| 38 | GameName string `json:"game_name"` | 44 | GameName string `json:"game_name"` |
| @@ -71,9 +77,8 @@ type MapRecords struct { | |||
| 71 | } | 77 | } |
| 72 | 78 | ||
| 73 | type UserRanking struct { | 79 | type UserRanking struct { |
| 74 | UserID string `json:"user_id"` | 80 | User UserShort `json:"user"` |
| 75 | UserName string `json:"user_name"` | 81 | TotalScore int `json:"total_score"` |
| 76 | TotalScore int `json:"total_score"` | ||
| 77 | } | 82 | } |
| 78 | 83 | ||
| 79 | type Game struct { | 84 | type Game struct { |