diff --git a/backend/src/main/java/app/controller/UserController.java b/backend/src/main/java/app/controller/UserController.java index bf7b9c0..d01819c 100644 --- a/backend/src/main/java/app/controller/UserController.java +++ b/backend/src/main/java/app/controller/UserController.java @@ -71,7 +71,7 @@ public String profile(Model model, @PathVariable long id) { } if (user.getId().equals(currentUser.getId())) { model.addAttribute("user", user); - List purchasedGames = purchaseService.purchasedGames(user); + List purchasedGames = purchaseService.purchasedGamesByUser(user); model.addAttribute("myGames", purchasedGames); model.addAttribute("haveGames", !purchasedGames.isEmpty()); model.addAttribute("gamesNumber", purchasedGames.size()); diff --git a/backend/src/main/java/app/repository/PurchaseRepository.java b/backend/src/main/java/app/repository/PurchaseRepository.java index 3a07032..1340f41 100644 --- a/backend/src/main/java/app/repository/PurchaseRepository.java +++ b/backend/src/main/java/app/repository/PurchaseRepository.java @@ -3,12 +3,17 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import app.model.Game; import app.model.Purchase; import app.model.User; public interface PurchaseRepository extends JpaRepository { List findByUser(User user); - + + @Query("SELECT DISTINCT g FROM Purchase p JOIN p.games g WHERE p.user = :user") + List findGamesByUser(@Param("user") User user); } diff --git a/backend/src/main/java/app/service/PurchaseService.java b/backend/src/main/java/app/service/PurchaseService.java index 5dd6738..e839ca6 100644 --- a/backend/src/main/java/app/service/PurchaseService.java +++ b/backend/src/main/java/app/service/PurchaseService.java @@ -3,16 +3,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.HashSet; import java.util.List; import java.util.Optional; -import java.util.Set; import app.model.Game; import app.model.Purchase; import app.model.User; import app.repository.PurchaseRepository; -import java.util.ArrayList; @Service public class PurchaseService { @@ -31,17 +28,8 @@ public void deleteById(long id) { purchases.deleteById(id); } - public Set purchasedGamesByUser(User user) { - List findByUser = purchases.findByUser(user); - Set games = new HashSet<>(); - for (Purchase purchase : findByUser) { - games.addAll(purchase.getGames()); - } - return games; - } - - public List purchasedGames(User user){ - return new ArrayList<>(purchasedGamesByUser(user)); + public List purchasedGamesByUser(User user) { + return purchases.findGamesByUser(user); } public int numberOfGames(User user){