회원과 게시글의 관계
한명의 회원이 여러개의 게시글을 올릴 수 있으니까 1:N
post가 N쪽이기 때문에 N쪽에 ManyToOne을 달아준다.
@ManyToOne
@JoinColumn(nullable = false)
private UserInfo userInfo;
그럼 post을 가져올 때마다 어떤 회원이 작성했는지를 반환해야한다.
Request에는 userId가 있어야된다.
public record PostRequest(
@Size(min = 1, max = 100) String title,
@Size(min = 1) String content,
Long boardId,
Long userId
) {
}
그렇다면, post를 저장할 때 UserId까지 같이 저장하면 된다.
//기존 코드
public PostResponse save(PostRequest postRequest) {
Board boardId = boardRepository.findById(postRequest.boardId())
.orElseThrow(() -> new NoSuchElementException("요청하신 게시판이 없습니다." + postRequest.boardId()));
Post post = postRepository.save(new Post(
postRequest.title(),
postRequest.content(),
boardId));
return new PostResponse(
post.getId(),
post.getTitle(),
post.getContent());
}
//수정된 코드
public PostResponse save(PostRequest postRequest) {
Board boardId = boardRepository.findById(postRequest.boardId())
.orElseThrow(() -> new NoSuchElementException("요청하신 게시판이 없습니다." + postRequest.boardId()));
UserInfo userInfoId = userRepository.findById(postRequest.userId())
.orElseThrow(() -> new NoSuchElementException("id를 찾을 수 없습니다."));
Post post = postRepository.save(new Post(
postRequest.title(),
postRequest.content(),
boardId,
userInfoId));
return new PostResponse(post.getId(), post.getTitle(), post.getContent());
}
boardId를 찾고, 또 UserId도 찾은 후 그걸 토대로 해당정보들을 같이 저장하면 된다.