diff --git a/pom.xml b/pom.xml index f70523c..14303fe 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,13 @@ 2023.0.1 + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + + org.springframework.boot spring-boot-starter-data-jpa diff --git a/src/main/java/tech/buildrun/picpay/PicpayApplication.java b/src/main/java/tech/buildrun/picpay/PicpayApplication.java index f407133..fe3a433 100644 --- a/src/main/java/tech/buildrun/picpay/PicpayApplication.java +++ b/src/main/java/tech/buildrun/picpay/PicpayApplication.java @@ -4,8 +4,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Info; + @EnableFeignClients @SpringBootApplication +@OpenAPIDefinition(info = @Info(title = "Swagger OpenApi", version = "1", description = "API de integração Rest-Client")) public class PicpayApplication { public static void main(String[] args) { diff --git a/src/main/java/tech/buildrun/picpay/controller/TransferController.java b/src/main/java/tech/buildrun/picpay/controller/TransferController.java index af2d77e..eb82847 100644 --- a/src/main/java/tech/buildrun/picpay/controller/TransferController.java +++ b/src/main/java/tech/buildrun/picpay/controller/TransferController.java @@ -1,8 +1,12 @@ package tech.buildrun.picpay.controller; -import feign.Response; import jakarta.validation.Valid; + +import java.util.List; +import java.util.UUID; + import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -21,9 +25,16 @@ public TransferController(TransferService transferService) { @PostMapping("/transfer") public ResponseEntity transfer(@RequestBody @Valid TransferDto dto) { + return ResponseEntity.ok(transferService.transfer(dto)); + } - var resp = transferService.transfer(dto); + @GetMapping("/transfer/{uuid}") + public ResponseEntity getTransfer( UUID uuid) { + return ResponseEntity.ok(transferService.getTransfer(uuid)); + } - return ResponseEntity.ok(resp); + @GetMapping("/transfer") + public ResponseEntity> getListTransfer() { + return ResponseEntity.ok(transferService.getListTransfer()); } } diff --git a/src/main/java/tech/buildrun/picpay/exception/InsufficientBalanceException.java b/src/main/java/tech/buildrun/picpay/exception/InsufficientBalanceException.java index b7e35b7..791e627 100644 --- a/src/main/java/tech/buildrun/picpay/exception/InsufficientBalanceException.java +++ b/src/main/java/tech/buildrun/picpay/exception/InsufficientBalanceException.java @@ -7,6 +7,7 @@ public class InsufficientBalanceException extends PicPayException{ @Override public ProblemDetail toProblemDetail() { + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); pb.setTitle("Insufficient balance."); diff --git a/src/main/java/tech/buildrun/picpay/exception/TransferNotAllowedForWalletTypeException.java b/src/main/java/tech/buildrun/picpay/exception/TransferNotAllowedForWalletTypeException.java index 35e3c3c..ea9260a 100644 --- a/src/main/java/tech/buildrun/picpay/exception/TransferNotAllowedForWalletTypeException.java +++ b/src/main/java/tech/buildrun/picpay/exception/TransferNotAllowedForWalletTypeException.java @@ -7,8 +7,8 @@ public class TransferNotAllowedForWalletTypeException extends PicPayException { @Override public ProblemDetail toProblemDetail() { + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); - pb.setTitle("This wallet type is not allowed to transfer."); return pb; diff --git a/src/main/java/tech/buildrun/picpay/exception/TransferNotAuthorizedException.java b/src/main/java/tech/buildrun/picpay/exception/TransferNotAuthorizedException.java index d5cc361..cd5a2ae 100644 --- a/src/main/java/tech/buildrun/picpay/exception/TransferNotAuthorizedException.java +++ b/src/main/java/tech/buildrun/picpay/exception/TransferNotAuthorizedException.java @@ -7,6 +7,7 @@ public class TransferNotAuthorizedException extends PicPayException{ @Override public ProblemDetail toProblemDetail() { + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); pb.setTitle("Transfer not authorized."); diff --git a/src/main/java/tech/buildrun/picpay/exception/TransferNotFoundException.java b/src/main/java/tech/buildrun/picpay/exception/TransferNotFoundException.java new file mode 100644 index 0000000..bbad9b9 --- /dev/null +++ b/src/main/java/tech/buildrun/picpay/exception/TransferNotFoundException.java @@ -0,0 +1,26 @@ +package tech.buildrun.picpay.exception; + +import java.util.UUID; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ProblemDetail; + +public class TransferNotFoundException extends PicPayException{ + + private UUID uuid; + + public TransferNotFoundException(UUID uuid) { + this.uuid = uuid; + } + + @Override + public ProblemDetail toProblemDetail() { + + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); + + pb.setTitle("Transfer not found"); + pb.setDetail("There is no Transfer with id " + uuid + "."); + + return pb; + } +} diff --git a/src/main/java/tech/buildrun/picpay/exception/WalletDataAlreadyExistsException.java b/src/main/java/tech/buildrun/picpay/exception/WalletDataAlreadyExistsException.java index 3bed7eb..a06b83c 100644 --- a/src/main/java/tech/buildrun/picpay/exception/WalletDataAlreadyExistsException.java +++ b/src/main/java/tech/buildrun/picpay/exception/WalletDataAlreadyExistsException.java @@ -13,6 +13,7 @@ public WalletDataAlreadyExistsException(String detail) { @Override public ProblemDetail toProblemDetail() { + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); pb.setTitle("Wallet data already exists"); diff --git a/src/main/java/tech/buildrun/picpay/exception/WalletNotFoundException.java b/src/main/java/tech/buildrun/picpay/exception/WalletNotFoundException.java index e7fd1d9..24792f7 100644 --- a/src/main/java/tech/buildrun/picpay/exception/WalletNotFoundException.java +++ b/src/main/java/tech/buildrun/picpay/exception/WalletNotFoundException.java @@ -13,6 +13,7 @@ public WalletNotFoundException(Long walletId) { @Override public ProblemDetail toProblemDetail() { + var pb = ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY); pb.setTitle("Wallet not found"); diff --git a/src/main/java/tech/buildrun/picpay/repository/TransferRepository.java b/src/main/java/tech/buildrun/picpay/repository/TransferRepository.java index 02358c3..fe46018 100644 --- a/src/main/java/tech/buildrun/picpay/repository/TransferRepository.java +++ b/src/main/java/tech/buildrun/picpay/repository/TransferRepository.java @@ -3,7 +3,12 @@ import org.springframework.data.jpa.repository.JpaRepository; import tech.buildrun.picpay.entity.Transfer; +import java.util.Optional; import java.util.UUID; public interface TransferRepository extends JpaRepository { + + Transfer findFirstByOrderByIdDesc(); + + Optional findById(UUID uuid); } diff --git a/src/main/java/tech/buildrun/picpay/service/TransferService.java b/src/main/java/tech/buildrun/picpay/service/TransferService.java index 9bf6a8f..8a2f73b 100644 --- a/src/main/java/tech/buildrun/picpay/service/TransferService.java +++ b/src/main/java/tech/buildrun/picpay/service/TransferService.java @@ -8,10 +8,13 @@ import tech.buildrun.picpay.exception.InsufficientBalanceException; import tech.buildrun.picpay.exception.TransferNotAllowedForWalletTypeException; import tech.buildrun.picpay.exception.TransferNotAuthorizedException; +import tech.buildrun.picpay.exception.TransferNotFoundException; import tech.buildrun.picpay.exception.WalletNotFoundException; import tech.buildrun.picpay.repository.TransferRepository; import tech.buildrun.picpay.repository.WalletRepository; +import java.util.List; +import java.util.UUID; import java.util.concurrent.CompletableFuture; @Service @@ -72,4 +75,13 @@ private void validateTransfer(TransferDto transferDto, Wallet sender) { } } + + public Transfer getTransfer( UUID uuid) { + return transferRepository.findById(uuid) + .orElseThrow(() -> new TransferNotFoundException(uuid)); + } + + public List getListTransfer() { + return transferRepository.findAll(); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index bfd57e0..c703ddc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -9,5 +9,3 @@ spring.jpa.show-sql=true client.authorization-service.url=https://run.mocky.io/v3/94b33905-b531-44b5-900d-0bbff13cbaa0 client.notification-service.url=https://run.mocky.io/v3/0a8ce973-1f03-44f1-bfe3-21544c300ed0 - -