diff options
Diffstat (limited to 'backend/handlers/map.go')
| -rw-r--r-- | backend/handlers/map.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/backend/handlers/map.go b/backend/handlers/map.go index 2a060e6..e55dab4 100644 --- a/backend/handlers/map.go +++ b/backend/handlers/map.go | |||
| @@ -101,6 +101,28 @@ func FetchMapSummary(c *gin.Context) { | |||
| 101 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | 101 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) |
| 102 | return | 102 | return |
| 103 | } | 103 | } |
| 104 | // Get completion count | ||
| 105 | if response.Map.IsCoop { | ||
| 106 | sql = `SELECT count(*) FROM ( SELECT host_id, partner_id, score_count, score_time, | ||
| 107 | ROW_NUMBER() OVER (PARTITION BY host_id, partner_id ORDER BY score_count, score_time) AS rn | ||
| 108 | FROM records_mp WHERE map_id = $1 | ||
| 109 | ) sub WHERE sub.rn = 1 AND score_count = $2` | ||
| 110 | err = database.DB.QueryRow(sql, response.Map.ID, route.History.ScoreCount).Scan(&route.CompletionCount) | ||
| 111 | if err != nil { | ||
| 112 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | ||
| 113 | return | ||
| 114 | } | ||
| 115 | } else { | ||
| 116 | sql = `SELECT count(*) FROM ( SELECT user_id, score_count, score_time, | ||
| 117 | ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score_count, score_time) AS rn | ||
| 118 | FROM records_sp WHERE map_id = $1 | ||
| 119 | ) sub WHERE rn = 1 AND score_count = $2` | ||
| 120 | err = database.DB.QueryRow(sql, response.Map.ID, route.History.ScoreCount).Scan(&route.CompletionCount) | ||
| 121 | if err != nil { | ||
| 122 | c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) | ||
| 123 | return | ||
| 124 | } | ||
| 125 | } | ||
| 104 | response.Summary.Routes = append(response.Summary.Routes, route) | 126 | response.Summary.Routes = append(response.Summary.Routes, route) |
| 105 | } | 127 | } |
| 106 | // Return response | 128 | // Return response |