Compare commits

..

10 commits

Author SHA1 Message Date
b34b12cfc7
Merge pull request 'refactor: refactor blackjack service' (!231) from refactor-blackjack into main
All checks were successful
Release / Release (push) Successful in 1m0s
Release / Build Frontend Image (push) Successful in 27s
Release / Build Backend Image (push) Successful in 32s
Reviewed-on: #231
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
Reviewed-by: Jan K9f <jan@kjan.email>
2025-05-28 09:54:53 +00:00
Phan Huy Tran
e78fc58aaa refactor: remove dependency
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (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 / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 54s
CI / Docker backend validation (pull_request) Successful in 55s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m20s
2025-05-28 11:50:10 +02:00
Phan Huy Tran
3cbffba14f refactor: use userservice and balance service inside blackjack service
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Successful in 51s
CI / Docker backend validation (pull_request) Successful in 54s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m30s
2025-05-28 11:41:32 +02:00
fe0bc9d556
Merge pull request 'chore: Update the claude instructions' (!234) from tea-cli into main
Reviewed-on: #234
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 09:39:25 +00:00
903ca20e9d fix: Fix typo
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / eslint (pull_request) Successful in 30s
CI / Docker backend validation (pull_request) Successful in 31s
CI / Docker frontend validation (pull_request) Successful in 33s
CI / oxlint (pull_request) Successful in 33s
CI / prettier (pull_request) Successful in 36s
CI / Checkstyle Main (pull_request) Successful in 54s
CI / test-build (pull_request) Successful in 52s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m16s
2025-05-28 11:36:57 +02:00
9553c66f11 chore: Update the claude instructions
All checks were successful
CI / Get Changed Files (pull_request) Successful in 29s
CI / oxlint (pull_request) Successful in 29s
CI / prettier (pull_request) Successful in 36s
CI / eslint (pull_request) Successful in 41s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m25s
CI / test-build (pull_request) Successful in 53s
CI / Docker backend validation (pull_request) Successful in 1m4s
CI / Docker frontend validation (pull_request) Successful in 1m11s
CI / Checkstyle Main (pull_request) Successful in 1m30s
2025-05-28 11:33:52 +02:00
d5f4bcee05
Merge pull request 'fix: Make claude better' (!233) from claude-mean into main
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / oxlint (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m20s
Reviewed-on: #233
2025-05-28 09:15:26 +00:00
efd744261d fix: Make claude better
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / oxlint (pull_request) Successful in 25s
CI / Docker frontend validation (pull_request) Successful in 29s
CI / Docker backend validation (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 33s
CI / prettier (pull_request) Successful in 33s
CI / Checkstyle Main (pull_request) Successful in 57s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m7s
CI / test-build (pull_request) Successful in 55s
2025-05-28 11:12:06 +02:00
89c6be5345
Merge pull request 'fix: Dont run on renovate' (!230) from no-renovate into main
Reviewed-on: #230
Reviewed-by: Claude <claude@anthropic.ai>
2025-05-28 09:07:30 +00:00
cd43f111c4 fix: Dont run on renovate
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / oxlint (pull_request) Successful in 33s
CI / Docker frontend validation (pull_request) Successful in 27s
CI / eslint (pull_request) Successful in 39s
CI / prettier (pull_request) Successful in 39s
CI / Docker backend validation (pull_request) Successful in 18s
CI / Checkstyle Main (pull_request) Successful in 1m5s
CI / test-build (pull_request) Successful in 1m0s
Setup Gitea Tea CLI / setup-and-login (pull_request) Successful in 1m49s
2025-05-28 11:05:18 +02:00
3 changed files with 41 additions and 26 deletions

View file

@ -15,6 +15,13 @@ jobs:
ref: ${{ github.ref }} ref: ${{ github.ref }}
fetch-tags: true fetch-tags: true
- name: Check if last commit is from Renovate Bot
id: check-renovate
run: |
AUTHOR=$(git log -1 --pretty=format:'%an')
echo "Author is $AUTHOR"
echo "author=$AUTHOR" >> "$GITHUB_OUTPUT"
- name: Set Tea Version - name: Set Tea Version
id: tea_version id: tea_version
run: echo "version=0.9.2" >> $GITHUB_OUTPUT # Check for the latest version run: echo "version=0.9.2" >> $GITHUB_OUTPUT # Check for the latest version
@ -51,6 +58,7 @@ jobs:
run: bun i -g @anthropic-ai/claude-code run: bun i -g @anthropic-ai/claude-code
- name: Claude PR Review - name: Claude PR Review
if: steps.check-renovate.outputs.author != 'Renovate Bot'
env: env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
PR_NUMBER: ${{ github.event.number }} PR_NUMBER: ${{ github.event.number }}
@ -63,4 +71,5 @@ jobs:
tea \"<reject or approve>\" ${PR_NUMBER} \"<your review message here>\" tea \"<reject or approve>\" ${PR_NUMBER} \"<your review message here>\"
Make sure the comment is clear, professional, and helpful. Only run the tea comment command once you're finished reviewing all changes. AND MOST IMPORTANDLY ONLY REVIEW THE DIFF FROM THE CURRENT STATE TO THE MAIN BRANCH TO GET THAT USE GIT DIFF." Make sure the comment is clear, professional, and helpful. Only run the tea comment command once you're finished reviewing all changes. AND MOST IMPORTANDLY ONLY REVIEW THE DIFF FROM THE CURRENT STATE TO THE MAIN BRANCH TO GET THAT USE GIT DIFF. Also if the changes are rejected be a bit mean
You may also use the tea cli to find out various things about the pull request"

View file

@ -1,10 +1,7 @@
package de.szut.casino.blackjack; package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserBlackJackGameMismatchException; import de.szut.casino.exceptionHandling.exceptions.UserBlackJackGameMismatchException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.dto.BetDto; import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity; import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserService; import de.szut.casino.user.UserService;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -13,18 +10,15 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
@Slf4j @Slf4j
@RestController @RestController
public class BlackJackGameController { public class BlackJackGameController {
private final BalanceService balanceService;
private final UserService userService; private final UserService userService;
private final BlackJackService blackJackService; private final BlackJackService blackJackService;
public BlackJackGameController(BalanceService balanceService, UserService userService, BlackJackService blackJackService) { public BlackJackGameController(UserService userService, BlackJackService blackJackService) {
this.balanceService = balanceService;
this.blackJackService = blackJackService; this.blackJackService = blackJackService;
this.userService = userService; this.userService = userService;
} }
@ -59,13 +53,7 @@ public class BlackJackGameController {
@PostMapping("/blackjack/start") @PostMapping("/blackjack/start")
public ResponseEntity<Object> createBlackJackGame(@RequestBody @Valid BetDto betDto) { public ResponseEntity<Object> createBlackJackGame(@RequestBody @Valid BetDto betDto) {
UserEntity user = this.userService.getCurrentUser(); return ResponseEntity.ok(blackJackService.createBlackJackGame(betDto));
if (!this.balanceService.hasFunds(user, betDto)) {
throw new InsufficientFundsException();
}
return ResponseEntity.ok(blackJackService.createBlackJackGame(user, betDto.getBetAmount()));
} }
private BlackJackGameEntity getBlackJackGame(Long gameId) { private BlackJackGameEntity getBlackJackGame(Long gameId) {

View file

@ -1,7 +1,11 @@
package de.szut.casino.blackjack; package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity; import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository; import de.szut.casino.user.UserRepository;
import de.szut.casino.user.UserService;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -13,11 +17,22 @@ import java.util.Random;
public class BlackJackService { public class BlackJackService {
private final BlackJackGameRepository blackJackGameRepository; private final BlackJackGameRepository blackJackGameRepository;
private final UserRepository userRepository; private final UserRepository userRepository;
private final Random random = new Random(); private final Random random;
private final BalanceService balanceService;
private final UserService userService;
public BlackJackService(BlackJackGameRepository blackJackGameRepository, UserRepository userRepository) { public BlackJackService(
BlackJackGameRepository blackJackGameRepository,
UserRepository userRepository,
Random random,
BalanceService balanceService,
UserService userService
) {
this.blackJackGameRepository = blackJackGameRepository; this.blackJackGameRepository = blackJackGameRepository;
this.userRepository = userRepository; this.userRepository = userRepository;
this.random = random;
this.balanceService = balanceService;
this.userService = userService;
} }
public BlackJackGameEntity getBlackJackGame(Long id) { public BlackJackGameEntity getBlackJackGame(Long id) {
@ -25,16 +40,23 @@ public class BlackJackService {
} }
@Transactional @Transactional
public BlackJackGameEntity createBlackJackGame(UserEntity user, BigDecimal betAmount) { public BlackJackGameEntity createBlackJackGame(BetDto betDto) {
UserEntity user = userService.getCurrentUser();
if (!this.balanceService.hasFunds(user, betDto)) {
throw new InsufficientFundsException();
}
this.balanceService.subtractFunds(user, betDto.getBetAmount());
BlackJackGameEntity game = new BlackJackGameEntity(); BlackJackGameEntity game = new BlackJackGameEntity();
game.setUser(user); game.setUser(user);
game.setBet(betAmount); game.setBet(betDto.getBetAmount());
initializeDeck(game); initializeDeck(game);
dealInitialCards(game); dealInitialCards(game);
game.setState(getState(game)); game.setState(getState(game));
deductBetFromBalance(user, betAmount);
return processGameBasedOnState(game); return processGameBasedOnState(game);
} }
@ -72,7 +94,8 @@ public class BlackJackService {
UserEntity user = getUserWithFreshData(game.getUser()); UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal additionalBet = game.getBet(); BigDecimal additionalBet = game.getBet();
deductBetFromBalance(user, additionalBet); this.balanceService.subtractFunds(user, additionalBet);
game.setBet(game.getBet().add(additionalBet)); game.setBet(game.getBet().add(additionalBet));
dealCardToPlayer(game); dealCardToPlayer(game);
@ -150,11 +173,6 @@ public class BlackJackService {
} }
} }
private void deductBetFromBalance(UserEntity user, BigDecimal betAmount) {
user.setBalance(user.getBalance().subtract(betAmount));
userRepository.save(user);
}
protected void updateUserBalance(BlackJackGameEntity game, boolean isWin) { protected void updateUserBalance(BlackJackGameEntity game, boolean isWin) {
UserEntity user = getUserWithFreshData(game.getUser()); UserEntity user = getUserWithFreshData(game.getUser());
BigDecimal totalBet = game.getBet(); BigDecimal totalBet = game.getBet();