WIP
[demos/spring/data-jdbc] / src / main / java / de / trion / kafka / outbox / OutboxController.java
1 package de.trion.kafka.outbox;
2
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;
11
12 import java.time.LocalDateTime;
13
14 @RestController
15 @Transactional
16 @RequestMapping("/users")
17 public class OutboxController {
18
19     private static final Logger LOG = LoggerFactory.getLogger(OutboxController.class);
20
21
22     private final UserRepository repository;
23
24
25     public OutboxController(UserRepository repository) {
26         this.repository = repository;
27     }
28
29
30     @PostMapping
31     public ResponseEntity<Void> getVorgang(
32             ServletUriComponentsBuilder builder,
33             @RequestBody String username) {
34         String cleaned = username.trim().toLowerCase();
35         User user = new User(cleaned, LocalDateTime.now(), false);
36         repository.save(user);
37         // TODO: Not-Unique Fehler auslösen
38         UriComponents uri =
39                 builder
40                     .fromCurrentRequest()
41                     .path("{username}")
42                     .buildAndExpand(cleaned);
43         return ResponseEntity.created(uri.toUri()).build();
44     }
45 }