diff --git a/src/main/java/com/pecacm/backend/controllers/UserController.java b/src/main/java/com/pecacm/backend/controllers/UserController.java index 0e267d9..465f2c7 100644 --- a/src/main/java/com/pecacm/backend/controllers/UserController.java +++ b/src/main/java/com/pecacm/backend/controllers/UserController.java @@ -110,7 +110,7 @@ public ResponseEntity getRank(@RequestParam @NonNull Integer score) { } @GetMapping("/leaderboard") - public ResponseEntity> getLeaderboard() { - return ResponseEntity.ok(userService.getLeaderboard()); + public ResponseEntity> getLeaderboard(@RequestParam @NonNull Integer pageSize,@RequestParam @NonNull Integer pageNum ) { + return ResponseEntity.ok(userService.getLeaderboard(pageSize,pageNum)); } } diff --git a/src/main/java/com/pecacm/backend/repository/UserRepository.java b/src/main/java/com/pecacm/backend/repository/UserRepository.java index bbe5abd..3708609 100644 --- a/src/main/java/com/pecacm/backend/repository/UserRepository.java +++ b/src/main/java/com/pecacm/backend/repository/UserRepository.java @@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.Collection; @@ -32,8 +33,8 @@ public interface UserRepository extends JpaRepository { Long countByXpGreaterThan(Integer xp); - @Query("SELECT u FROM User u ORDER BY u.xp DESC LIMIT 5") - List findAllByByOrderByXpDesc(); + @Query("SELECT u FROM User u ORDER BY u.xp DESC LIMIT :pageSize OFFSET :offSetSize") + List findAllByOrderByXpDesc(Integer pageSize, Integer offSetSize); } diff --git a/src/main/java/com/pecacm/backend/services/UserService.java b/src/main/java/com/pecacm/backend/services/UserService.java index 83268d5..eca2464 100644 --- a/src/main/java/com/pecacm/backend/services/UserService.java +++ b/src/main/java/com/pecacm/backend/services/UserService.java @@ -110,7 +110,8 @@ public Long getRank(Integer score) { return userRepository.countByXpGreaterThan(score) + 1; } - public List getLeaderboard() { - return userRepository.findAllByByOrderByXpDesc(); + public List getLeaderboard(Integer pageSize, Integer pageNum) { + Integer offSetSize=(pageNum-1)*pageSize; + return userRepository.findAllByOrderByXpDesc(pageSize,offSetSize); } }