-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCommentController.java
60 lines (48 loc) · 2.19 KB
/
CommentController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package demo.rest;
import java.time.LocalDateTime;
import java.util.Optional;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import demo.domain.Comment;
import demo.repository.CommentRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequiredArgsConstructor
public class CommentController {
private final CommentRepository commentRepository;
@GetMapping("/comments")
public ResponseEntity<Iterable<Comment>> getComments(@RequestParam(name = "mentionId") Integer mentionId) {
return ResponseEntity.ok(commentRepository.findAllByMentionIdOrderByCreatedAtAsc(mentionId));
}
@GetMapping("/comment/{id}")
public ResponseEntity<Comment> getComment(@PathVariable("id") String id) {
final Optional<Comment> commentOptional = commentRepository.findById(id);
return commentOptional.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@PostMapping("/comments")
public ResponseEntity<Comment> createComment(@RequestBody Comment comment) {
comment.setCreatedAt(LocalDateTime.now());
comment.setId(null);
comment = commentRepository.save(comment);
return ResponseEntity.ok(comment);
}
@PutMapping("/comment/{id}")
public ResponseEntity<Comment> updateComment(@PathVariable("id") String id,
@RequestBody Comment update) {
final Optional<Comment> commentOptional = commentRepository.findById(id);
if (!commentOptional.isPresent()) {
return ResponseEntity.notFound().build();
}
final Comment saved = commentOptional.get();
saved.setContent(update.getContent());
return ResponseEntity.ok(commentRepository.save(saved));
}
}