65 lines
1.8 KiB
Java
65 lines
1.8 KiB
Java
package de.szut.casino.blackjack;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
|
import de.szut.casino.user.UserEntity;
|
|
import jakarta.persistence.*;
|
|
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;
|
|
import java.util.List;
|
|
|
|
@Entity
|
|
@Getter
|
|
@Setter
|
|
@AllArgsConstructor
|
|
@NoArgsConstructor
|
|
public class BlackJackGameEntity {
|
|
@Id
|
|
@GeneratedValue
|
|
private Long id;
|
|
|
|
@ManyToOne
|
|
@JoinColumn(name = "user_id", nullable = false)
|
|
@JsonIgnore
|
|
private UserEntity user;
|
|
|
|
public Long getUserId() {
|
|
return user != null ? user.getId() : null;
|
|
}
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
private BlackJackState state;
|
|
private BigDecimal bet;
|
|
|
|
@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<>();
|
|
|
|
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
|
@JsonManagedReference
|
|
@SQLRestriction("card_type = 'PLAYER_SPLIT'")
|
|
private List<CardEntity> playerSplitCards = new ArrayList<>();
|
|
|
|
@Column(name = "split_bet")
|
|
private BigDecimal splitBet;
|
|
|
|
@Column(name = "is_split")
|
|
private boolean isSplit;
|
|
}
|