import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.net.URI;
@RestController
@RequiredArgsConstructor
@Slf4j
-public class TransferController
+ public class TransferController
{
public final static String PATH = "/transfers";
path = PATH,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<?> transfer(@Valid @RequestBody TransferRequest transferRequest)
+ public ResponseEntity<?> transfer(@Valid @RequestBody TransferDTO transferDTO)
{
Transfer transfer =
Transfer
.builder()
- .id(transferRequest.getId())
- .payer(transferRequest.getPayer())
- .payee(transferRequest.getPayee())
- .amount(transferRequest.getAmount())
+ .id(transferDTO.getId())
+ .payer(transferDTO.getPayer())
+ .payee(transferDTO.getPayee())
+ .amount(transferDTO.getAmount())
.build();
service.initiate(transfer);
- return ResponseEntity.created(URI.create(PATH + transferRequest.getId())).build();
+ return ResponseEntity.created(URI.create(PATH + "/" + transferDTO.getId())).build();
+ }
+
+ @GetMapping(
+ path = PATH + "/{id}",
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<TransferDTO> get(@PathVariable Long id)
+ {
+ return
+ service
+ .get(id)
+ .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer)))
+ .orElse(ResponseEntity.notFound().build());
}
}