From 9db6e532a55c4ebee45d1250134a8add18bf837b Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Fri, 22 Sep 2023 17:46:07 +0300 Subject: feat: completion count on summary for each cm entry (#63) Former-commit-id: 38779e7cbddb7e850a5f4a56565938b3dcb14857 --- backend/handlers/map.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'backend/handlers') 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) { c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } + // Get completion count + if response.Map.IsCoop { + sql = `SELECT count(*) FROM ( SELECT host_id, partner_id, score_count, score_time, + ROW_NUMBER() OVER (PARTITION BY host_id, partner_id ORDER BY score_count, score_time) AS rn + FROM records_mp WHERE map_id = $1 + ) sub WHERE sub.rn = 1 AND score_count = $2` + err = database.DB.QueryRow(sql, response.Map.ID, route.History.ScoreCount).Scan(&route.CompletionCount) + if err != nil { + c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) + return + } + } else { + sql = `SELECT count(*) FROM ( SELECT user_id, score_count, score_time, + ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score_count, score_time) AS rn + FROM records_sp WHERE map_id = $1 + ) sub WHERE rn = 1 AND score_count = $2` + err = database.DB.QueryRow(sql, response.Map.ID, route.History.ScoreCount).Scan(&route.CompletionCount) + if err != nil { + c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) + return + } + } response.Summary.Routes = append(response.Summary.Routes, route) } // Return response -- cgit v1.2.3