Compare commits

...

5 commits

Author SHA1 Message Date
2ff25f9897
Merge pull request 'refactor: throw and handle unsufficient funds exception' (!144) from refactor-unsufficient-funds into main
All checks were successful
Release / Release (push) Successful in 56s
Release / Build Frontend Image (push) Successful in 52s
Release / Build Backend Image (push) Successful in 1m5s
Reviewed-on: #144
Reviewed-by: Constantin Simonis <constantin@simonis.lol>
2025-04-24 12:51:19 +00:00
dd4f754e7e
Merge pull request 'feat(docker): wait for backend host to resolve before start' (!145) from bugfix/frontend into main
Some checks failed
Release / Build Backend Image (push) Blocked by required conditions
Release / Build Frontend Image (push) Blocked by required conditions
Release / Release (push) Has been cancelled
Reviewed-on: #145
2025-04-24 12:50:52 +00:00
454aa47153
Merge branch 'main' into bugfix/frontend
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 24s
CI / eslint (pull_request) Successful in 26s
CI / test-build (pull_request) Successful in 32s
2025-04-24 12:49:58 +00:00
csimonis
9a901154b6 feat(docker): wait for backend host to resolve before start
All checks were successful
CI / Get Changed Files (pull_request) Successful in 8s
CI / Checkstyle Main (pull_request) Has been skipped
CI / prettier (pull_request) Successful in 47s
CI / eslint (pull_request) Successful in 52s
CI / test-build (pull_request) Successful in 57s
2025-04-24 14:48:40 +02:00
Phan Huy Tran
a22c127500 refactor: throw and handle unsufficient funds exception
All checks were successful
CI / Get Changed Files (pull_request) Successful in 6s
CI / eslint (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 40s
2025-04-24 14:48:30 +02:00
6 changed files with 30 additions and 5 deletions

View file

@ -1,5 +1,6 @@
package de.szut.casino.blackjack;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
@ -123,7 +124,7 @@ public class BlackJackGameController {
UserEntity user = optionalUser.get();
if (!this.balanceService.hasFunds(user, betDto)) {
return ResponseEntity.badRequest().body(Collections.singletonMap("error", "Insufficient funds"));
throw new InsufficientFundsException();
}
return ResponseEntity.ok(blackJackService.createBlackJackGame(user, betDto.getBetAmount()));

View file

@ -1,5 +1,6 @@
package de.szut.casino.exceptionHandling;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -17,4 +18,10 @@ public class GlobalExceptionHandler {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}
@ExceptionHandler(InsufficientFundsException.class)
public ResponseEntity<?> handleInsufficientFundsException(InsufficientFundsException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.BAD_REQUEST);
}
}

View file

@ -0,0 +1,11 @@
package de.szut.casino.exceptionHandling.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class InsufficientFundsException extends RuntimeException {
public InsufficientFundsException() {
super("insufficient funds");
}
}

View file

@ -1,5 +1,6 @@
package de.szut.casino.lootboxes;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
@ -44,9 +45,7 @@ public class LootBoxController {
UserEntity user = optionalUser.get();
if (lootBoxService.hasSufficientBalance(user, lootBox.getPrice())) {
Map<String, String> errorResponse = new HashMap<>();
errorResponse.put("error", "Insufficient balance");
return ResponseEntity.badRequest().body(errorResponse);
throw new InsufficientFundsException();
}
RewardEntity reward = lootBoxService.determineReward(lootBox);

View file

@ -1,5 +1,6 @@
package de.szut.casino.slots;
import de.szut.casino.exceptionHandling.exceptions.InsufficientFundsException;
import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
@ -38,7 +39,7 @@ public class SlotController {
UserEntity user = optionalUser.get();
if (!this.balanceService.hasFunds(user, betDto)) {
return ResponseEntity.badRequest().body(Collections.singletonMap("error", "Insufficient funds"));
throw new InsufficientFundsException();
}
SpinResult spinResult = this.slotService.spin(

View file

@ -3,5 +3,11 @@
: ${BACKEND_HOST:=localhost}
: ${BACKEND_PORT:=8080}
# Wait until the backend host is resolvable
echo "Waiting for backend host $BACKEND_HOST..."
until getent hosts "$BACKEND_HOST" > /dev/null; do
sleep 1
done
envsubst '$BACKEND_HOST $BACKEND_PORT' < /etc/nginx/templates/nginx.conf.template > /etc/nginx/conf.d/default.conf
exec nginx -g 'daemon off;'