aboutsummaryrefslogtreecommitdiff
path: root/backend/controllers/userController.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/controllers/userController.go')
-rw-r--r--backend/controllers/userController.go59
1 files changed, 12 insertions, 47 deletions
diff --git a/backend/controllers/userController.go b/backend/controllers/userController.go
index 64f144a..960ecb4 100644
--- a/backend/controllers/userController.go
+++ b/backend/controllers/userController.go
@@ -143,58 +143,21 @@ func FetchUser(c *gin.Context) {
143 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 143 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
144 return 144 return
145 } 145 }
146 // Retrieve singleplayer records 146 // Get user titles
147 var scoresSP []ScoreResponse 147 sql := `SELECT t.title_name, t.title_color FROM titles t
148 sql := `SELECT id, map_id, score_count, score_time, demo_id, record_date FROM records_sp WHERE user_id = $1 ORDER BY map_id` 148 INNER JOIN user_titles ut ON t.id=ut.title_id WHERE ut.user_id = $1`
149 rows, err := database.DB.Query(sql, user.SteamID) 149 rows, err := database.DB.Query(sql, user.SteamID)
150 if err != nil { 150 if err != nil {
151 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 151 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
152 return 152 return
153 } 153 }
154 var recordsSP []models.RecordSP
155 for rows.Next() { 154 for rows.Next() {
156 var mapID int 155 var title models.Title
157 var record models.RecordSP 156 if err := rows.Scan(&title.Name, &title.Color); err != nil {
158 rows.Scan(&record.RecordID, &mapID, &record.ScoreCount, &record.ScoreTime, &record.DemoID, &record.RecordDate) 157 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
159 // More than one record in one map 158 return
160 if len(scoresSP) != 0 && mapID == scoresSP[len(scoresSP)-1].MapID {
161 scoresSP[len(scoresSP)-1].Records = append(scoresSP[len(scoresSP)-1].Records.([]models.RecordSP), record)
162 continue
163 }
164 // New map
165 recordsSP = []models.RecordSP{}
166 recordsSP = append(recordsSP, record)
167 scoresSP = append(scoresSP, ScoreResponse{
168 MapID: mapID,
169 Records: recordsSP,
170 })
171 }
172 // Retrieve multiplayer records
173 var scoresMP []ScoreResponse
174 sql = `SELECT id, map_id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date FROM records_mp
175 WHERE host_id = $1 OR partner_id = $2 ORDER BY map_id`
176 rows, err = database.DB.Query(sql, user.SteamID, user.SteamID)
177 if err != nil {
178 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
179 return
180 }
181 var recordsMP []models.RecordMP
182 for rows.Next() {
183 var mapID int
184 var record models.RecordMP
185 rows.Scan(&record.RecordID, &mapID, &record.HostID, &record.PartnerID, &record.ScoreCount, &record.ScoreTime, &record.HostDemoID, &record.PartnerDemoID, &record.RecordDate)
186 // More than one record in one map
187 if len(scoresMP) != 0 && mapID == scoresMP[len(scoresMP)-1].MapID {
188 scoresMP[len(scoresMP)-1].Records = append(scoresMP[len(scoresMP)-1].Records.([]models.RecordMP), record)
189 continue
190 } 159 }
191 // New map 160 user.Titles = append(user.Titles, title)
192 recordsMP = []models.RecordMP{}
193 recordsMP = append(recordsMP, record)
194 scoresMP = append(scoresMP, ScoreResponse{
195 MapID: mapID,
196 Records: recordsMP,
197 })
198 } 161 }
199 c.JSON(http.StatusOK, models.Response{ 162 c.JSON(http.StatusOK, models.Response{
200 Success: true, 163 Success: true,
@@ -205,8 +168,10 @@ func FetchUser(c *gin.Context) {
205 UserName: user.UserName, 168 UserName: user.UserName,
206 AvatarLink: user.AvatarLink, 169 AvatarLink: user.AvatarLink,
207 CountryCode: user.CountryCode, 170 CountryCode: user.CountryCode,
208 ScoresSP: scoresSP, 171 Titles: user.Titles,
209 ScoresMP: scoresMP, 172 Links: models.Links{},
173 Rankings: ProfileRankings{},
174 Records: ProfileRecords{},
210 }, 175 },
211 }) 176 })
212 return 177 return