X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Ftrion%2Fkafka%2Foutbox%2FOutboxController.java;h=86ff44fa49733fffd003d07f01e5cdbde8b01cd1;hb=4079eda81d0c8f94f3b1ded78056b52256f0d519;hp=934ca1fe84b5fa5336e3eab2bf54497b737eed69;hpb=a498c7ae070b064dc7ea9a453b389ecff5c190ce;p=demos%2Fkafka%2Foutbox diff --git a/src/main/java/de/trion/kafka/outbox/OutboxController.java b/src/main/java/de/trion/kafka/outbox/OutboxController.java index 934ca1f..86ff44f 100644 --- a/src/main/java/de/trion/kafka/outbox/OutboxController.java +++ b/src/main/java/de/trion/kafka/outbox/OutboxController.java @@ -2,26 +2,61 @@ package de.trion.kafka.outbox; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import org.springframework.web.context.request.async.DeferredResult; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; + +import java.time.LocalDateTime; @RestController +@Transactional +@RequestMapping("/users") public class OutboxController { private static final Logger LOG = LoggerFactory.getLogger(OutboxController.class); - private final OutboxService service; + private final UserRepository repository; + + + public OutboxController(UserRepository repository) { + this.repository = repository; + } + + + @PostMapping + public ResponseEntity getVorgang( + ServletUriComponentsBuilder builder, + @RequestBody String username) { + String sanitizedUsername = OutboxController.sanitize(username); + User user = new User(sanitizedUsername, LocalDateTime.now(), false); + repository.save(user); + // TODO: Not-Unique Fehler auslösen + UriComponents uri = + builder + .fromCurrentRequest() + .path("{username}") + .buildAndExpand(sanitizedUsername); + return ResponseEntity.created(uri.toUri()).build(); + } + + @GetMapping("{username}") + public ResponseEntity getUser(@PathVariable String username) { + User user = repository.findByUsername(OutboxController.sanitize(username)); + if (user == null) + return ResponseEntity.notFound().build(); - public OutboxController(OutboxService service) { - this.service = service; + return ResponseEntity.ok(user); } + private static String sanitize(String string) { + if (string == null) + return ""; - @PostMapping("/create") - public ResponseEntity getVorgang(@RequestBody String user) { + return string.trim().toLowerCase(); } }