diff --git a/src/main/java/drip/competition/feedback/controller/AdminController.java b/src/main/java/drip/competition/feedback/controller/AdminController.java index a65ee68..24daf4e 100644 --- a/src/main/java/drip/competition/feedback/controller/AdminController.java +++ b/src/main/java/drip/competition/feedback/controller/AdminController.java @@ -4,17 +4,16 @@ import drip.competition.feedback.entities.Game; import drip.competition.feedback.repository.CompetitionRepository; import drip.competition.feedback.repository.GameRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; import java.util.UUID; - @RestController -@RequestMapping("/admin") +@RequestMapping("/api/v1/admin") @PreAuthorize("hasRole('ADMIN')") public class AdminController { @@ -27,14 +26,15 @@ public AdminController(GameRepository gameRepository, this.competitionRepository = competitionRepository; } - @GetMapping("/user") + @GetMapping("/users/{id}/matches") + @Transactional(readOnly = true) + public Page getUserMatches(@PathVariable("id") UUID iduser, Pageable pageable) { + return gameRepository.findByIduser(iduser, pageable); + } + + @GetMapping("/users/{id}/tournaments") @Transactional(readOnly = true) - public List getByUser(@RequestParam UUID iduser) { - List games = gameRepository.findByIduser(iduser); - List competitions = competitionRepository.findByIduser(iduser); - List result = new ArrayList<>(); - result.addAll(games); - result.addAll(competitions); - return result; + public Page getUserTournaments(@PathVariable("id") UUID iduser, Pageable pageable) { + return competitionRepository.findByIduser(iduser, pageable); } } diff --git a/src/main/java/drip/competition/feedback/controller/UserController.java b/src/main/java/drip/competition/feedback/controller/UserController.java index 9f59285..772b74a 100644 --- a/src/main/java/drip/competition/feedback/controller/UserController.java +++ b/src/main/java/drip/competition/feedback/controller/UserController.java @@ -4,15 +4,19 @@ import drip.competition.feedback.entities.Game; import drip.competition.feedback.repository.CompetitionRepository; import drip.competition.feedback.repository.GameRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.util.UriComponentsBuilder; -import java.util.List; +import java.net.URI; import java.util.UUID; @RestController -@RequestMapping("/user") +@RequestMapping("/api/v1/feedback") @PreAuthorize("isAuthenticated()") public class UserController { @@ -25,25 +29,29 @@ public UserController(GameRepository gameRepository, this.competitionRepository = competitionRepository; } - @PostMapping("/add/game") + @PostMapping("/matches") @Transactional - public Game addGame(@RequestBody Game game) { - return gameRepository.save(game); + public ResponseEntity createMatch(@RequestBody Game game, UriComponentsBuilder builder) { + Game saved = gameRepository.save(game); + URI location = builder.path("/api/v1/feedback/matches/{id}").buildAndExpand(saved.getId()).toUri(); + return ResponseEntity.created(location).build(); // 201 Created } - @PostMapping("/add/competition") + @PostMapping("/tournaments") @Transactional - public Competition addCompetition(@RequestBody Competition competition) { - return competitionRepository.save(competition); + public ResponseEntity createTournament(@RequestBody Competition competition, UriComponentsBuilder builder) { + Competition saved = competitionRepository.save(competition); + URI location = builder.path("/api/v1/feedback/tournaments/{id}").buildAndExpand(saved.getId()).toUri(); + return ResponseEntity.created(location).build(); // 201 Created } - @GetMapping("/game") - public List getAllGame(@RequestParam UUID idgame) { - return gameRepository.findByIdgame(idgame); + @GetMapping("/matches") + public Page getMatches(@RequestParam UUID idgame, Pageable pageable) { + return gameRepository.findByIdgame(idgame, pageable); } - @GetMapping("/competition") - public List getAllCompetition(@RequestParam UUID idcompetition) { - return competitionRepository.findByIdcompetition(idcompetition); + @GetMapping("/tournaments") + public Page getTournaments(@RequestParam UUID idcompetition, Pageable pageable) { + return competitionRepository.findByIdcompetition(idcompetition, pageable); } } diff --git a/src/main/java/drip/competition/feedback/repository/CompetitionRepository.java b/src/main/java/drip/competition/feedback/repository/CompetitionRepository.java index e367399..43f299f 100644 --- a/src/main/java/drip/competition/feedback/repository/CompetitionRepository.java +++ b/src/main/java/drip/competition/feedback/repository/CompetitionRepository.java @@ -1,17 +1,13 @@ package drip.competition.feedback.repository; import drip.competition.feedback.entities.Competition; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import java.util.List; import java.util.UUID; -@Repository public interface CompetitionRepository extends JpaRepository { - - List findByIdcompetition(UUID idcompetition); - - List findByIduser(UUID iduser); - + Page findByIduser(UUID iduser, Pageable pageable); + Page findByIdcompetition(UUID idcompetition, Pageable pageable); } diff --git a/src/main/java/drip/competition/feedback/repository/GameRepository.java b/src/main/java/drip/competition/feedback/repository/GameRepository.java index a017479..f6dad67 100644 --- a/src/main/java/drip/competition/feedback/repository/GameRepository.java +++ b/src/main/java/drip/competition/feedback/repository/GameRepository.java @@ -1,17 +1,13 @@ package drip.competition.feedback.repository; import drip.competition.feedback.entities.Game; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import java.util.List; import java.util.UUID; -@Repository public interface GameRepository extends JpaRepository { - - List findByIdgame(UUID idgame); - - List findByIduser(UUID iduser); - + Page findByIduser(UUID iduser, Pageable pageable); + Page findByIdgame(UUID idgame, Pageable pageable); }