chore: Remove old Anhang and add some code to the docs
All checks were successful
Build docs / build-docs (pull_request) Successful in 29s
Label PRs based on size / Check PR size (pull_request) Successful in 27s
CI / Get Changed Files (pull_request) Successful in 34s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m41s
All checks were successful
Build docs / build-docs (pull_request) Successful in 29s
Label PRs based on size / Check PR size (pull_request) Successful in 27s
CI / Get Changed Files (pull_request) Successful in 34s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 4s
CI / Checkstyle Main (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m41s
This commit is contained in:
parent
c87a0593b3
commit
0e9e729fdf
10 changed files with 489 additions and 53 deletions
92
projektdokumentation/Listings/UserEntity.java
Normal file
92
projektdokumentation/Listings/UserEntity.java
Normal file
|
@ -0,0 +1,92 @@
|
|||
package de.szut.casino.user;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
public class UserEntity {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
||||
@Version
|
||||
private Long version;
|
||||
|
||||
@Column(unique = true)
|
||||
private String email;
|
||||
|
||||
@Column(unique = true)
|
||||
private String username;
|
||||
|
||||
private String password;
|
||||
|
||||
@Column(precision = 19, scale = 2)
|
||||
private BigDecimal balance;
|
||||
|
||||
private Boolean emailVerified = false;
|
||||
|
||||
private String verificationToken;
|
||||
|
||||
private String passwordResetToken;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private AuthProvider provider = AuthProvider.LOCAL;
|
||||
|
||||
private String providerId;
|
||||
|
||||
public UserEntity(String email, String username, String password, BigDecimal balance, String verificationToken) {
|
||||
this.email = email;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.balance = balance;
|
||||
this.verificationToken = verificationToken;
|
||||
}
|
||||
|
||||
public UserEntity(String email, String username, AuthProvider provider, String providerId, BigDecimal balance) {
|
||||
this.email = email;
|
||||
this.username = username;
|
||||
this.provider = provider;
|
||||
this.providerId = providerId;
|
||||
this.balance = balance;
|
||||
this.emailVerified = true; // OAuth providers verify emails
|
||||
}
|
||||
|
||||
public void addBalance(BigDecimal amountToAdd) {
|
||||
if (amountToAdd == null || amountToAdd.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.balance == null) {
|
||||
this.balance = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
this.balance = this.balance.add(amountToAdd);
|
||||
}
|
||||
|
||||
public void subtractBalance(BigDecimal amountToSubtract) {
|
||||
if (amountToSubtract == null || amountToSubtract.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
throw new IllegalArgumentException("Amount to subtract must be positive.");
|
||||
}
|
||||
|
||||
if (this.balance == null) {
|
||||
this.balance = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
if (this.balance.compareTo(amountToSubtract) < 0) {
|
||||
throw new IllegalStateException("Insufficient funds to subtract " + amountToSubtract);
|
||||
}
|
||||
|
||||
this.balance = this.balance.subtract(amountToSubtract);
|
||||
}
|
||||
|
||||
public String getEmailAddress() {
|
||||
return "${name} <${email}>".replace("${name}", this.username).replace("${email}", this.email);
|
||||
}
|
||||
}
|
Reference in a new issue