package mk.finki.roomreservation.exception; import org.springframework.dao.DataAccessException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.Map; @RestControllerAdvice public class ApiExceptionHandler { @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity> handleIllegalArgument(IllegalArgumentException ex) { return ResponseEntity .status(HttpStatus.BAD_REQUEST) .body(Map.of("message", ex.getMessage())); } @ExceptionHandler(DataAccessException.class) public ResponseEntity> handleDatabaseError(DataAccessException ex) { String message = ex.getMostSpecificCause() != null ? ex.getMostSpecificCause().getMessage() : ex.getMessage(); return ResponseEntity .status(HttpStatus.BAD_REQUEST) .body(Map.of("message", message)); } @ExceptionHandler(RuntimeException.class) public ResponseEntity> handleRuntime(RuntimeException ex) { return ResponseEntity .status(HttpStatus.BAD_REQUEST) .body(Map.of("message", ex.getMessage())); } }