fix: fix playercards, dealercards and deck referencing the same database entity
All checks were successful
All checks were successful
This commit is contained in:
parent
500a76dd7a
commit
7a7d24c8ea
5 changed files with 21 additions and 12 deletions
|
@ -7,6 +7,6 @@ Content-Type: application/json
|
|||
}
|
||||
|
||||
###
|
||||
POST http://localhost:8080/blackjack/52/hit
|
||||
POST http://localhost:8080/blackjack/103/hit
|
||||
Authorization: Bearer {{token}}
|
||||
|
||||
|
|
|
@ -40,10 +40,7 @@ public class BlackJackGameController {
|
|||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
// TODO validate that hit is a valid action
|
||||
|
||||
blackJackService.hit(game);
|
||||
return ResponseEntity.ok(game);
|
||||
return ResponseEntity.ok(blackJackService.hit(game));
|
||||
}
|
||||
|
||||
@PostMapping("/blackjack/start")
|
||||
|
|
|
@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.hibernate.annotations.SQLRestriction;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
|
@ -39,13 +40,16 @@ public class BlackJackGameEntity {
|
|||
|
||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonIgnore
|
||||
@SQLRestriction("card_type = 'DECK'")
|
||||
private List<CardEntity> deck = new ArrayList<>();
|
||||
|
||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonManagedReference
|
||||
@SQLRestriction("card_type = 'PLAYER'")
|
||||
private List<CardEntity> playerCards = new ArrayList<>();
|
||||
|
||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonManagedReference
|
||||
@SQLRestriction("card_type = 'DEALER'")
|
||||
private List<CardEntity> dealerCards = new ArrayList<>();
|
||||
}
|
||||
|
|
|
@ -5,10 +5,8 @@ import de.szut.casino.user.UserRepository;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@Service
|
||||
|
@ -36,10 +34,12 @@ public class BlackJackService {
|
|||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
CardEntity playerCard = drawCardFromDeck(game);
|
||||
playerCard.setCardType(CardType.PLAYER);
|
||||
game.getPlayerCards().add(playerCard);
|
||||
}
|
||||
|
||||
CardEntity dealerCard = drawCardFromDeck(game);
|
||||
dealerCard.setCardType(CardType.DEALER);
|
||||
game.getDealerCards().add(dealerCard);
|
||||
|
||||
game.setState(getState(game));
|
||||
|
@ -53,11 +53,12 @@ public class BlackJackService {
|
|||
|
||||
public BlackJackGameEntity hit(BlackJackGameEntity game) {
|
||||
CardEntity drawnCard = drawCardFromDeck(game);
|
||||
List<CardEntity> playerCards = game.getPlayerCards();
|
||||
drawnCard.setCardType(CardType.PLAYER);
|
||||
game.getPlayerCards().add(drawnCard);
|
||||
|
||||
playerCards.add(drawnCard);
|
||||
blackJackGameRepository.save(game);
|
||||
return game;
|
||||
game.setState(getState(game));
|
||||
|
||||
return blackJackGameRepository.save(game);
|
||||
}
|
||||
|
||||
private void initializeDeck(BlackJackGameEntity game) {
|
||||
|
@ -67,6 +68,7 @@ public class BlackJackService {
|
|||
card.setGame(game);
|
||||
card.setSuit(suit);
|
||||
card.setRank(rank);
|
||||
card.setCardType(CardType.DECK);
|
||||
game.getDeck().add(card);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package de.szut.casino.blackjack;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import jakarta.persistence.*;
|
||||
|
@ -30,4 +29,11 @@ public class CardEntity {
|
|||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private Rank rank;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private CardType cardType;
|
||||
}
|
||||
|
||||
enum CardType {
|
||||
DECK, PLAYER, DEALER
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue