aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/controllers/mapController.go22
-rw-r--r--backend/models/models.go2
2 files changed, 22 insertions, 2 deletions
diff --git a/backend/controllers/mapController.go b/backend/controllers/mapController.go
index c26d1ad..53fb18c 100644
--- a/backend/controllers/mapController.go
+++ b/backend/controllers/mapController.go
@@ -34,12 +34,14 @@ func FetchMap(c *gin.Context) {
34 if mapData.IsCoop { 34 if mapData.IsCoop {
35 var records []models.RecordMP 35 var records []models.RecordMP
36 sql = `SELECT id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date 36 sql = `SELECT id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date
37 FROM records_mp WHERE map_id = $1;` 37 FROM records_mp WHERE map_id = $1 ORDER BY score_count, score_time;`
38 rows, err := database.DB.Query(sql, id) 38 rows, err := database.DB.Query(sql, id)
39 if err != nil { 39 if err != nil {
40 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 40 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
41 return 41 return
42 } 42 }
43 placement := 1
44 ties := 0
43 for rows.Next() { 45 for rows.Next() {
44 var record models.RecordMP 46 var record models.RecordMP
45 err := rows.Scan(&record.RecordID, &record.HostID, &record.PartnerID, &record.ScoreCount, &record.ScoreTime, &record.HostDemoID, &record.PartnerDemoID, &record.RecordDate) 47 err := rows.Scan(&record.RecordID, &record.HostID, &record.PartnerID, &record.ScoreCount, &record.ScoreTime, &record.HostDemoID, &record.PartnerDemoID, &record.RecordDate)
@@ -47,18 +49,27 @@ func FetchMap(c *gin.Context) {
47 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 49 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
48 return 50 return
49 } 51 }
52 if len(records) != 0 && records[len(records)-1].ScoreTime == record.ScoreTime {
53 ties++
54 record.Placement = placement - ties
55 } else {
56 record.Placement = placement
57 }
50 records = append(records, record) 58 records = append(records, record)
59 placement++
51 } 60 }
52 mapData.Records = records 61 mapData.Records = records
53 } else { 62 } else {
54 var records []models.RecordSP 63 var records []models.RecordSP
55 sql = `SELECT id, user_id, score_count, score_time, demo_id, record_date 64 sql = `SELECT id, user_id, score_count, score_time, demo_id, record_date
56 FROM records_sp WHERE map_id = $1;` 65 FROM records_sp WHERE map_id = $1 ORDER BY score_count, score_time;`
57 rows, err := database.DB.Query(sql, id) 66 rows, err := database.DB.Query(sql, id)
58 if err != nil { 67 if err != nil {
59 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 68 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
60 return 69 return
61 } 70 }
71 placement := 1
72 ties := 0
62 for rows.Next() { 73 for rows.Next() {
63 var record models.RecordSP 74 var record models.RecordSP
64 err := rows.Scan(&record.RecordID, &record.UserID, &record.ScoreCount, &record.ScoreTime, &record.DemoID, &record.RecordDate) 75 err := rows.Scan(&record.RecordID, &record.UserID, &record.ScoreCount, &record.ScoreTime, &record.DemoID, &record.RecordDate)
@@ -66,7 +77,14 @@ func FetchMap(c *gin.Context) {
66 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 77 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
67 return 78 return
68 } 79 }
80 if len(records) != 0 && records[len(records)-1].ScoreTime == record.ScoreTime {
81 ties++
82 record.Placement = placement - ties
83 } else {
84 record.Placement = placement
85 }
69 records = append(records, record) 86 records = append(records, record)
87 placement++
70 } 88 }
71 mapData.Records = records 89 mapData.Records = records
72 } 90 }
diff --git a/backend/models/models.go b/backend/models/models.go
index 8e710b7..0c380ff 100644
--- a/backend/models/models.go
+++ b/backend/models/models.go
@@ -34,6 +34,7 @@ type Map struct {
34 34
35type RecordSP struct { 35type RecordSP struct {
36 RecordID int `json:"record_id"` 36 RecordID int `json:"record_id"`
37 Placement int `json:"placement"`
37 UserID string `json:"user_id"` 38 UserID string `json:"user_id"`
38 ScoreCount int `json:"score_count"` 39 ScoreCount int `json:"score_count"`
39 ScoreTime int `json:"score_time"` 40 ScoreTime int `json:"score_time"`
@@ -43,6 +44,7 @@ type RecordSP struct {
43 44
44type RecordMP struct { 45type RecordMP struct {
45 RecordID int `json:"record_id"` 46 RecordID int `json:"record_id"`
47 Placement int `json:"placement"`
46 HostID string `json:"host_id"` 48 HostID string `json:"host_id"`
47 PartnerID string `json:"partner_id"` 49 PartnerID string `json:"partner_id"`
48 ScoreCount int `json:"score_count"` 50 ScoreCount int `json:"score_count"`