[ 개인과제 ]
2단계 : 댓글 등록
Entity를 연결하는 방법
1. DB에 내가 원하는 schedule이 있는지 확인하고
2. 있다면 연관관계를 맺고 (+예외처리)
3. 저장한다.
// CommentController
@PostMapping("/board/{boardId}/comments")
public CommentResponseDto createComment(@RequestBody CommentRequestDto requestDto, @PathVariable Long boardId) {
return commentService.createComment(requestDto, boardId);
}
파라미터에서 @PathVariable을 사용하여 boardId를 받아온다.
// CommentService
public CommentResponseDto createComment(CommentRequestDto commentRequestDto, Long boardId) {
Board board = boardService.findBoard(boardId); // DB에 있는지 먼저 확인
Comment comment = new Comment(commentRequestDto, board); // 있으면 -> 연관관계 맺기
// 예외처리
if (comment.getContent().isEmpty()) { // 댓글 내용이 비어 있는 경우
throw new IllegalArgumentException("댓글 내용을 작성해주세요");
}
else if (comment.getBoard() == null) { // 일정이 DB에 저장되지 않은 경우
throw new IllegalArgumentException("등록된 일정을 선택해주세요.");
}
commentRepository.save(comment); // 저장
return new CommentResponseDto(comment);
}
먼저 boardId로 board가 DB에 저장되어 있는 값인지 찾아본다.
원래는 CommentService에 BoardService를 선언하지 않는 것이 원칙이지만, 이번 과제에서는 일단 선언해서 사용한다.
board가 존재한다면, 연관관계를 맺어 새로운 comment 객체를 생성한다.
commentRepository에 저장하기 전 예외처리를 한다.
// Comment
public Comment(CommentRequestDto requestDto, Board board) {
this.content = requestDto.getContent();
this.userId = requestDto.getUserId();
this.board = board;
}
Comment Entity의 constructor에 board가 추가되어야 한다.
'스파르타 내배캠' 카테고리의 다른 글
[TIL] #28. 인증/인가 (0) | 2024.05.30 |
---|---|
[TIL] #27. JWT Util (0) | 2024.05.30 |
[TIL] #25. HTTP 응답 상태 반환 (0) | 2024.05.28 |
[TIL] #24. JWT (0) | 2024.05.24 |
[TIL] #23. 연관관계 (0) | 2024.05.24 |