1 package de.trion.kafka.outbox;
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import org.springframework.http.ResponseEntity;
6 import org.springframework.transaction.annotation.Transactional;
7 import org.springframework.web.bind.annotation.*;
8 import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
9 import org.springframework.web.util.UriComponents;
10 import org.springframework.web.util.UriComponentsBuilder;
12 import java.time.LocalDateTime;
16 @RequestMapping("/users")
17 public class OutboxController {
19 private static final Logger LOG = LoggerFactory.getLogger(OutboxController.class);
22 private final UserRepository repository;
25 public OutboxController(UserRepository repository) {
26 this.repository = repository;
31 public ResponseEntity<Void> getVorgang(
32 ServletUriComponentsBuilder builder,
33 @RequestBody String username) {
34 String sanitizedUsername = OutboxController.sanitize(username);
35 User user = new User(sanitizedUsername, LocalDateTime.now(), false);
36 repository.save(user);
37 // TODO: Not-Unique Fehler auslösen
42 .buildAndExpand(sanitizedUsername);
43 return ResponseEntity.created(uri.toUri()).build();
46 @GetMapping("{username}")
47 public ResponseEntity<User> getUser(@PathVariable String username) {
48 User user = repository.findByUsername(OutboxController.sanitize(username));
51 return ResponseEntity.notFound().build();
53 return ResponseEntity.ok(user);
56 private static String sanitize(String string) {
60 return string.trim().toLowerCase();