게시판 프로젝트(4)

Beomi·2023년 12월 10일
post-thumbnail

Service 설계

  • service 부분을 설계 시작
  • create 기능 제작
@Service
@RequiredArgsConstructor
public class BoardService {

    private final BoardRepository boardRepository;

    public BoardEntity create(
            BoardRequest boardRequest
    ){
        var entity = BoardEntity.builder()
                .userName(boardRequest.getUserName())
                .title(boardRequest.getTitle())
                .content(boardRequest.getContent())
                .boardAt(LocalDateTime.now())
                .status("REGISTERED")
                .build()
                ;

        return boardRepository.save(entity);
    }
}
  • controller
@RestController
@RequestMapping("/api/board")
@RequiredArgsConstructor
public class BoardApiController {

    private final BoardService boardService;

    @PostMapping("")
    public BoardEntity create(
            @Valid
            @RequestBody BoardRequest boardRequest
            ){
        return boardService.create(boardRequest);
    }
}
  • 테스트는 포스트맨을 사용하여 테스트를 진행함.

  • json형식으로 request부분을 전송

public class BoardRequest {

    @NotBlank
    private String userName;

    @NotBlank
    private String title;

    @NotBlank
    private String content;
}

comment의 service 설계

@Service
@RequiredArgsConstructor
public class CommentService {

    private final CommentRepository commentRepository;

    public CommentEntity create(
            CommentRequest commentRequest
    ){
        // 주어진 boardId에 해당하는 BoardEntity를 찾음
        var boardEntity = boardRepository.findById(commentRequest.getBoardId()).get();

        // CommentEntity를 생성하고 저장
        var entity = CommentEntity.builder()
                .boardEntity(boardEntity)
                .content(commentRequest.getContent())
                .userName(commentRequest.getUserName())
                .commentAt(LocalDateTime.now())
                .status("REGISTERED")
                .build()
                ;
        return commentRepository.save(entity);
    }
}
  • board의 id와 연결
  • controller
@RequiredArgsConstructor
@RestController
@RequestMapping("/api/comment")
@Slf4j
public class CommentApiController {

    private final CommentService commentService;

    @PostMapping("")
    public CommentEntity create(
            @Valid
            @RequestBody CommentRequest commentRequest
            ){

        // log.info(String.valueOf(commentRequest));
        return commentService.create(commentRequest);
    }
}
  • 테스트

0개의 댓글