diff --git a/backend/requests/lootboxes.http b/backend/requests/lootboxes.http new file mode 100644 index 0000000..2c7fe2e --- /dev/null +++ b/backend/requests/lootboxes.http @@ -0,0 +1,4 @@ +GET http://localhost:8080/lootboxes +Authorization: Bearer {{token}} +Content-Type: application/json + diff --git a/backend/src/main/java/de/szut/casino/CasinoApplication.java b/backend/src/main/java/de/szut/casino/CasinoApplication.java index cc22e2c..2499781 100644 --- a/backend/src/main/java/de/szut/casino/CasinoApplication.java +++ b/backend/src/main/java/de/szut/casino/CasinoApplication.java @@ -11,6 +11,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -30,55 +31,61 @@ public class CasinoApplication { public CommandLineRunner initData(LootBoxRepository lootBoxRepository, RewardRepository rewardRepository) { return _ -> { if (lootBoxRepository.count() == 0) { - // Create basic LootBox LootBoxEntity basicLootBox = new LootBoxEntity(); basicLootBox.setName("Basic LootBox"); basicLootBox.setPrice(new BigDecimal("1.99")); + basicLootBox.setRewards(new ArrayList<>()); // Initialize the list - // Create premium LootBox LootBoxEntity premiumLootBox = new LootBoxEntity(); premiumLootBox.setName("Premium LootBox"); premiumLootBox.setPrice(new BigDecimal("4.99")); + premiumLootBox.setRewards(new ArrayList<>()); // Initialize the list - // Save LootBoxes first to get IDs + // Save the loot boxes first lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox)); - // Create rewards for basic LootBox RewardEntity commonReward = new RewardEntity(); commonReward.setValue(new BigDecimal("0.50")); commonReward.setProbability(new BigDecimal("70.00")); - commonReward.setLootBoxes(List.of(premiumLootBox)); RewardEntity rareReward = new RewardEntity(); rareReward.setValue(new BigDecimal("2.00")); rareReward.setProbability(new BigDecimal("25.00")); - rareReward.setLootBoxes(List.of(basicLootBox)); RewardEntity epicReward = new RewardEntity(); epicReward.setValue(new BigDecimal("5.00")); epicReward.setProbability(new BigDecimal("5.00")); - epicReward.setLootBoxes(List.of(basicLootBox)); - // Create rewards for premium LootBox RewardEntity premiumCommon = new RewardEntity(); premiumCommon.setValue(new BigDecimal("2.00")); premiumCommon.setProbability(new BigDecimal("60.00")); - premiumCommon.setLootBoxes(List.of(premiumLootBox)); RewardEntity premiumRare = new RewardEntity(); premiumRare.setValue(new BigDecimal("5.00")); premiumRare.setProbability(new BigDecimal("30.00")); - premiumRare.setLootBoxes(List.of(premiumLootBox)); RewardEntity legendaryReward = new RewardEntity(); legendaryReward.setValue(new BigDecimal("15.00")); legendaryReward.setProbability(new BigDecimal("10.00")); - legendaryReward.setLootBoxes(List.of(premiumLootBox)); + // Save all rewards rewardRepository.saveAll(Arrays.asList( commonReward, rareReward, epicReward, premiumCommon, premiumRare, legendaryReward )); + + // Add relationships from the owning side (LootBox) + basicLootBox.getRewards().add(rareReward); + basicLootBox.getRewards().add(epicReward); + + premiumLootBox.getRewards().add(commonReward); + premiumLootBox.getRewards().add(premiumCommon); + premiumLootBox.getRewards().add(premiumRare); + premiumLootBox.getRewards().add(legendaryReward); + + // Update the loot boxes to save the relationships + lootBoxRepository.saveAll(Arrays.asList(basicLootBox, premiumLootBox)); + System.out.println("Initial LootBoxes and rewards created successfully"); } else { System.out.println("LootBoxes already exist, skipping initialization"); diff --git a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java new file mode 100644 index 0000000..c885b5d --- /dev/null +++ b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java @@ -0,0 +1,20 @@ +package de.szut.casino.lootboxes; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class LootBoxController { + private final LootBoxRepository lootBoxRepository; + + public LootBoxController(LootBoxRepository lootBoxRepository) { + this.lootBoxRepository = lootBoxRepository; + } + + @GetMapping("/lootboxes") + public List getAllLootBoxes() { + return lootBoxRepository.findAll(); + } +} diff --git a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java index bd6c588..49eb532 100644 --- a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java +++ b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxEntity.java @@ -2,6 +2,7 @@ package de.szut.casino.lootboxes; import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonManagedReference; import de.szut.casino.blackjack.CardEntity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java b/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java index 97ad6d1..ce0c155 100644 --- a/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java +++ b/backend/src/main/java/de/szut/casino/lootboxes/RewardEntity.java @@ -1,6 +1,7 @@ package de.szut.casino.lootboxes; import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -24,5 +25,6 @@ public class RewardEntity { private BigDecimal probability; @ManyToMany(mappedBy = "rewards") + @JsonBackReference private List lootBoxes = new ArrayList<>(); }