diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-10-21 12:50:32 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-21 12:50:32 +0300 |
| commit | 1cbdc3ac8d7da784dfefcd653ef2c8a0ca480c55 (patch) | |
| tree | 666edcd9da8924155554a5eb43fb22885f89526f /backend/handlers/user.go | |
| parent | update parser so that it gets correct ticks (#113) (diff) | |
| download | lphub-1cbdc3ac8d7da784dfefcd653ef2c8a0ca480c55.tar.gz lphub-1cbdc3ac8d7da784dfefcd653ef2c8a0ca480c55.tar.bz2 lphub-1cbdc3ac8d7da784dfefcd653ef2c8a0ca480c55.zip | |
remove pagination for profile/user (#121)
Former-commit-id: 7f2b74c18d316330c250d8aac058aa1912b4d1e0
Diffstat (limited to 'backend/handlers/user.go')
| -rw-r--r-- | backend/handlers/user.go | 65 |
1 files changed, 2 insertions, 63 deletions
diff --git a/backend/handlers/user.go b/backend/handlers/user.go index a9174a2..e975d07 100644 --- a/backend/handlers/user.go +++ b/backend/handlers/user.go | |||
| @@ -4,7 +4,6 @@ import ( | |||
| 4 | "net/http" | 4 | "net/http" |
| 5 | "os" | 5 | "os" |
| 6 | "regexp" | 6 | "regexp" |
| 7 | "strconv" | ||
| 8 | "time" | 7 | "time" |
| 9 | 8 | ||
| 10 | "github.com/gin-gonic/gin" | 9 | "github.com/gin-gonic/gin" |
| @@ -75,18 +74,10 @@ func Profile(c *gin.Context) { | |||
| 75 | c.JSON(http.StatusOK, models.ErrorResponse("User not logged in.")) | 74 | c.JSON(http.StatusOK, models.ErrorResponse("User not logged in.")) |
| 76 | return | 75 | return |
| 77 | } | 76 | } |
| 78 | page, err := strconv.Atoi(c.DefaultQuery("page", "1")) | ||
| 79 | if err != nil || page < 1 { | ||
| 80 | page = 1 | ||
| 81 | } | ||
| 82 | pageSize, err := strconv.Atoi(c.DefaultQuery("pageSize", "20")) | ||
| 83 | if err != nil || pageSize < 1 { | ||
| 84 | pageSize = 20 | ||
| 85 | } | ||
| 86 | // Get user links | 77 | // Get user links |
| 87 | links := models.Links{} | 78 | links := models.Links{} |
| 88 | sql := `SELECT u.p2sr, u.steam, u.youtube, u.twitch FROM users u WHERE u.steam_id = $1` | 79 | sql := `SELECT u.p2sr, u.steam, u.youtube, u.twitch FROM users u WHERE u.steam_id = $1` |
| 89 | err = database.DB.QueryRow(sql, user.(models.User).SteamID).Scan(&links.P2SR, &links.Steam, &links.YouTube, &links.Twitch) | 80 | err := database.DB.QueryRow(sql, user.(models.User).SteamID).Scan(&links.P2SR, &links.Steam, &links.YouTube, &links.Twitch) |
| 90 | if err != nil { | 81 | if err != nil { |
| 91 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 82 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 92 | return | 83 | return |
| @@ -301,8 +292,6 @@ func Profile(c *gin.Context) { | |||
| 301 | } | 292 | } |
| 302 | } | 293 | } |
| 303 | records := []ProfileRecords{} | 294 | records := []ProfileRecords{} |
| 304 | totalRecords := 0 | ||
| 305 | totalPages := 0 | ||
| 306 | // Get singleplayer records | 295 | // Get singleplayer records |
| 307 | sql = `SELECT sp.id, m.game_id, m.chapter_id, sp.map_id, m."name", (SELECT mr.score_count FROM map_routes mr WHERE mr.map_id = sp.map_id ORDER BY mr.score_count ASC LIMIT 1) AS wr_count, sp.score_count, sp.score_time, sp.demo_id, sp.record_date | 296 | sql = `SELECT sp.id, m.game_id, m.chapter_id, sp.map_id, m."name", (SELECT mr.score_count FROM map_routes mr WHERE mr.map_id = sp.map_id ORDER BY mr.score_count ASC LIMIT 1) AS wr_count, sp.score_count, sp.score_time, sp.demo_id, sp.record_date |
| 308 | FROM records_sp sp INNER JOIN maps m ON sp.map_id = m.id WHERE sp.user_id = $1 AND sp.is_deleted = false ORDER BY sp.map_id, sp.score_count, sp.score_time` | 297 | FROM records_sp sp INNER JOIN maps m ON sp.map_id = m.id WHERE sp.user_id = $1 AND sp.is_deleted = false ORDER BY sp.map_id, sp.score_count, sp.score_time` |
| @@ -405,20 +394,6 @@ func Profile(c *gin.Context) { | |||
| 405 | placementIndex++ | 394 | placementIndex++ |
| 406 | records[len(records)-1].Scores = append(records[len(records)-1].Scores, score) | 395 | records[len(records)-1].Scores = append(records[len(records)-1].Scores, score) |
| 407 | } | 396 | } |
| 408 | totalRecords = len(records) | ||
| 409 | if totalRecords != 0 { | ||
| 410 | totalPages = (totalRecords + pageSize - 1) / pageSize | ||
| 411 | if page > totalPages { | ||
| 412 | c.JSON(http.StatusOK, models.ErrorResponse("Invalid page number.")) | ||
| 413 | return | ||
| 414 | } | ||
| 415 | startIndex := (page - 1) * pageSize | ||
| 416 | endIndex := startIndex + pageSize | ||
| 417 | if endIndex > totalRecords { | ||
| 418 | endIndex = totalRecords | ||
| 419 | } | ||
| 420 | records = records[startIndex:endIndex] | ||
| 421 | } | ||
| 422 | c.JSON(http.StatusOK, models.Response{ | 397 | c.JSON(http.StatusOK, models.Response{ |
| 423 | Success: true, | 398 | Success: true, |
| 424 | Message: "Successfully retrieved user scores.", | 399 | Message: "Successfully retrieved user scores.", |
| @@ -432,12 +407,6 @@ func Profile(c *gin.Context) { | |||
| 432 | Links: links, | 407 | Links: links, |
| 433 | Rankings: rankings, | 408 | Rankings: rankings, |
| 434 | Records: records, | 409 | Records: records, |
| 435 | Pagination: models.Pagination{ | ||
| 436 | TotalRecords: totalRecords, | ||
| 437 | TotalPages: totalPages, | ||
| 438 | CurrentPage: page, | ||
| 439 | PageSize: pageSize, | ||
| 440 | }, | ||
| 441 | }, | 410 | }, |
| 442 | }) | 411 | }) |
| 443 | } | 412 | } |
| @@ -459,19 +428,11 @@ func FetchUser(c *gin.Context) { | |||
| 459 | c.JSON(http.StatusOK, models.ErrorResponse("User not found.")) | 428 | c.JSON(http.StatusOK, models.ErrorResponse("User not found.")) |
| 460 | return | 429 | return |
| 461 | } | 430 | } |
| 462 | page, err := strconv.Atoi(c.DefaultQuery("page", "1")) | ||
| 463 | if err != nil || page < 1 { | ||
| 464 | page = 1 | ||
| 465 | } | ||
| 466 | pageSize, err := strconv.Atoi(c.DefaultQuery("pageSize", "20")) | ||
| 467 | if err != nil || pageSize < 1 { | ||
| 468 | pageSize = 20 | ||
| 469 | } | ||
| 470 | // Check if user exists | 431 | // Check if user exists |
| 471 | var user models.User | 432 | var user models.User |
| 472 | links := models.Links{} | 433 | links := models.Links{} |
| 473 | sql := `SELECT u.steam_id, u.user_name, u.avatar_link, u.country_code, u.created_at, u.updated_at, u.p2sr, u.steam, u.youtube, u.twitch FROM users u WHERE u.steam_id = $1` | 434 | sql := `SELECT u.steam_id, u.user_name, u.avatar_link, u.country_code, u.created_at, u.updated_at, u.p2sr, u.steam, u.youtube, u.twitch FROM users u WHERE u.steam_id = $1` |
| 474 | err = database.DB.QueryRow(sql, id).Scan(&user.SteamID, &user.UserName, &user.AvatarLink, &user.CountryCode, &user.CreatedAt, &user.UpdatedAt, &links.P2SR, &links.Steam, &links.YouTube, &links.Twitch) | 435 | err := database.DB.QueryRow(sql, id).Scan(&user.SteamID, &user.UserName, &user.AvatarLink, &user.CountryCode, &user.CreatedAt, &user.UpdatedAt, &links.P2SR, &links.Steam, &links.YouTube, &links.Twitch) |
| 475 | if err != nil { | 436 | if err != nil { |
| 476 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 437 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 477 | return | 438 | return |
| @@ -703,8 +664,6 @@ func FetchUser(c *gin.Context) { | |||
| 703 | } | 664 | } |
| 704 | } | 665 | } |
| 705 | records := []ProfileRecords{} | 666 | records := []ProfileRecords{} |
| 706 | totalRecords := 0 | ||
| 707 | totalPages := 0 | ||
| 708 | // Get singleplayer records | 667 | // Get singleplayer records |
| 709 | sql = `SELECT sp.id, m.game_id, m.chapter_id, sp.map_id, m."name", (SELECT mr.score_count FROM map_routes mr WHERE mr.map_id = sp.map_id ORDER BY mr.score_count ASC LIMIT 1) AS wr_count, sp.score_count, sp.score_time, sp.demo_id, sp.record_date | 668 | sql = `SELECT sp.id, m.game_id, m.chapter_id, sp.map_id, m."name", (SELECT mr.score_count FROM map_routes mr WHERE mr.map_id = sp.map_id ORDER BY mr.score_count ASC LIMIT 1) AS wr_count, sp.score_count, sp.score_time, sp.demo_id, sp.record_date |
| 710 | FROM records_sp sp INNER JOIN maps m ON sp.map_id = m.id WHERE sp.user_id = $1 AND sp.is_deleted = false ORDER BY sp.map_id, sp.score_count, sp.score_time` | 669 | FROM records_sp sp INNER JOIN maps m ON sp.map_id = m.id WHERE sp.user_id = $1 AND sp.is_deleted = false ORDER BY sp.map_id, sp.score_count, sp.score_time` |
| @@ -807,20 +766,6 @@ func FetchUser(c *gin.Context) { | |||
| 807 | placementIndex++ | 766 | placementIndex++ |
| 808 | records[len(records)-1].Scores = append(records[len(records)-1].Scores, score) | 767 | records[len(records)-1].Scores = append(records[len(records)-1].Scores, score) |
| 809 | } | 768 | } |
| 810 | totalRecords = len(records) | ||
| 811 | if totalRecords != 0 { | ||
| 812 | totalPages = (totalRecords + pageSize - 1) / pageSize | ||
| 813 | if page > totalPages { | ||
| 814 | c.JSON(http.StatusOK, models.ErrorResponse("Invalid page number.")) | ||
| 815 | return | ||
| 816 | } | ||
| 817 | startIndex := (page - 1) * pageSize | ||
| 818 | endIndex := startIndex + pageSize | ||
| 819 | if endIndex > totalRecords { | ||
| 820 | endIndex = totalRecords | ||
| 821 | } | ||
| 822 | records = records[startIndex:endIndex] | ||
| 823 | } | ||
| 824 | c.JSON(http.StatusOK, models.Response{ | 769 | c.JSON(http.StatusOK, models.Response{ |
| 825 | Success: true, | 770 | Success: true, |
| 826 | Message: "Successfully retrieved user scores.", | 771 | Message: "Successfully retrieved user scores.", |
| @@ -834,12 +779,6 @@ func FetchUser(c *gin.Context) { | |||
| 834 | Links: links, | 779 | Links: links, |
| 835 | Rankings: rankings, | 780 | Rankings: rankings, |
| 836 | Records: records, | 781 | Records: records, |
| 837 | Pagination: models.Pagination{ | ||
| 838 | TotalRecords: totalRecords, | ||
| 839 | TotalPages: totalPages, | ||
| 840 | CurrentPage: page, | ||
| 841 | PageSize: pageSize, | ||
| 842 | }, | ||
| 843 | }, | 782 | }, |
| 844 | }) | 783 | }) |
| 845 | } | 784 | } |