f1119f2edf83e2cedbf577db2b2961a42580903e
[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.util.UriComponents;
9 import org.springframework.web.util.UriComponentsBuilder;
10
11 import java.time.LocalDateTime;
12
13 @RestController
14 @Transactional
15 @RequestMapping("/users")
16 public class OutboxController {
17
18     private static final Logger LOG = LoggerFactory.getLogger(OutboxController.class);
19
20
21     private final UserRepository repository;
22
23
24     public OutboxController(UserRepository repository) {
25         this.repository = repository;
26     }
27
28
29     @PostMapping()
30     public ResponseEntity<Void> getVorgang(
31             UriComponentsBuilder builder,
32             @RequestBody String username) {
33         String cleaned = username.trim().toLowerCase();
34         User user = new User(cleaned, LocalDateTime.now(), false);
35         repository.save(user);
36         // TODO: Not-Unique Fehler auslösen
37         UriComponents uri = builder.path("{username}").buildAndExpand(cleaned);
38         return ResponseEntity.created(uri.toUri()).build();
39     }
40 }