aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-22 16:35:37 +0300
committerGitHub <noreply@github.com>2023-09-22 16:35:37 +0300
commitd21a1f9edb97ed4a8b18215a1f5a96e0700cf7f4 (patch)
tree848117e5c2f47ff7e7d401d6fb6a856ccadc5034 /backend
parentfix: leaderboards tie check, ordering (#60) (diff)
downloadlphub-d21a1f9edb97ed4a8b18215a1f5a96e0700cf7f4.tar.gz
lphub-d21a1f9edb97ed4a8b18215a1f5a96e0700cf7f4.tar.bz2
lphub-d21a1f9edb97ed4a8b18215a1f5a96e0700cf7f4.zip
fix: page number error on empty records (#62)
Former-commit-id: 2cc0de90a469feed0dd42cc2c0529b2e7ed72bae
Diffstat (limited to 'backend')
-rw-r--r--backend/handlers/map.go46
1 files changed, 26 insertions, 20 deletions
diff --git a/backend/handlers/map.go b/backend/handlers/map.go
index c1f68eb..2a060e6 100644
--- a/backend/handlers/map.go
+++ b/backend/handlers/map.go
@@ -213,18 +213,21 @@ func FetchMapLeaderboards(c *gin.Context) {
213 records = append(records, record) 213 records = append(records, record)
214 placement++ 214 placement++
215 } 215 }
216 response.Records = records
216 totalRecords = len(records) 217 totalRecords = len(records)
217 totalPages = (totalRecords + pageSize - 1) / pageSize 218 if totalRecords != 0 {
218 if page > totalPages { 219 totalPages = (totalRecords + pageSize - 1) / pageSize
219 c.JSON(http.StatusBadRequest, models.ErrorResponse("Invalid page number.")) 220 if page > totalPages {
220 return 221 c.JSON(http.StatusBadRequest, models.ErrorResponse("Invalid page number."))
221 } 222 return
222 startIndex := (page - 1) * pageSize 223 }
223 endIndex := startIndex + pageSize 224 startIndex := (page - 1) * pageSize
224 if endIndex > totalRecords { 225 endIndex := startIndex + pageSize
225 endIndex = totalRecords 226 if endIndex > totalRecords {
227 endIndex = totalRecords
228 }
229 response.Records = records[startIndex:endIndex]
226 } 230 }
227 response.Records = records[startIndex:endIndex]
228 } else { 231 } else {
229 records := []RecordSingleplayer{} 232 records := []RecordSingleplayer{}
230 sql = `SELECT id, user_id, users.user_name, users.avatar_link, score_count, score_time, demo_id, record_date 233 sql = `SELECT id, user_id, users.user_name, users.avatar_link, score_count, score_time, demo_id, record_date
@@ -260,18 +263,21 @@ func FetchMapLeaderboards(c *gin.Context) {
260 records = append(records, record) 263 records = append(records, record)
261 placement++ 264 placement++
262 } 265 }
266 response.Records = records
263 totalRecords = len(records) 267 totalRecords = len(records)
264 totalPages = (totalRecords + pageSize - 1) / pageSize 268 if totalRecords != 0 {
265 if page > totalPages { 269 totalPages = (totalRecords + pageSize - 1) / pageSize
266 c.JSON(http.StatusBadRequest, models.ErrorResponse("Invalid page number.")) 270 if page > totalPages {
267 return 271 c.JSON(http.StatusBadRequest, models.ErrorResponse("Invalid page number."))
268 } 272 return
269 startIndex := (page - 1) * pageSize 273 }
270 endIndex := startIndex + pageSize 274 startIndex := (page - 1) * pageSize
271 if endIndex > totalRecords { 275 endIndex := startIndex + pageSize
272 endIndex = totalRecords 276 if endIndex > totalRecords {
277 endIndex = totalRecords
278 }
279 response.Records = records[startIndex:endIndex]
273 } 280 }
274 response.Records = records[startIndex:endIndex]
275 } 281 }
276 response.Pagination = models.Pagination{ 282 response.Pagination = models.Pagination{
277 TotalRecords: totalRecords, 283 TotalRecords: totalRecords,