AccountController.java
package dev.ianrobrien.fakebank.accounts;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import dev.ianrobrien.fakebank.api.AccountsApi;
import dev.ianrobrien.fakebank.model.AccountBalance;
import dev.ianrobrien.fakebank.model.AccountDetails;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
/***
* Handles HTTP requests, can be useful for validating requests and performing
* common actions such as reading data from headers or adding a request id
*/
@RestController
@RequiredArgsConstructor
@Slf4j
public class AccountController implements AccountsApi {
private final AccountService accountService;
/***
* Returns the balance of an account given by its id
* @param accountId (required)
* @return the specified account balance
*/
@SneakyThrows
@Override
public ResponseEntity<AccountBalance> getAccountBalance(Long accountId) {
log.info("Received getAccountBalance request for account {}", accountId);
return ResponseEntity.ok(accountService.getAccountBalance(accountId));
}
/***
* Returns the details of an account given by its id
* @param accountId (required)
* @return the specified account details
*/
@SneakyThrows
@Override
public ResponseEntity<AccountDetails> getAccountDetails(Long accountId) {
log.info("Received getAccountDetails request for account {}", accountId);
return ResponseEntity.ok(accountService.getAccountDetails(accountId));
}
}