Skip to content

Commit

Permalink
feat/fix: Board 공개여부 관련 API 구현 및 수정 #196
Browse files Browse the repository at this point in the history
- 공개 상태인 Board를 조회하는 boards/public api 추가
- Board 생성 API 수정
  • Loading branch information
tjdwns5063 committed Mar 25, 2024
1 parent 5bde2c4 commit ffddcc6
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 2 deletions.
7 changes: 7 additions & 0 deletions src/main/java/com/strcat/controller/BoardController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.strcat.controller;

import com.strcat.domain.Board;
import com.strcat.domain.User;
import com.strcat.dto.CreateBoardReqDto;
import com.strcat.dto.CreateContentReqDto;
Expand All @@ -15,6 +16,7 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatusCode;
Expand Down Expand Up @@ -111,4 +113,9 @@ public ReadBoardResDto deleteContents(@PathVariable(name = "boardId") String enc

return contentService.deleteContent(encryptedBoardId, dto, user);
}

@GetMapping("/public")
public List<ReadBoardResDto> readPublicBoards() {
return boardService.readPublicBoard().stream().map((board) -> board.toReadBoardResDto(false)).toList();
}
}
1 change: 1 addition & 0 deletions src/main/java/com/strcat/repository/BoardRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@
@Repository
public interface BoardRepository extends JpaRepository<Board, Long> {
Optional<Board> findByEncryptedId(String encryptedId);
List<Board> findByIsPublicTrue();
}
6 changes: 4 additions & 2 deletions src/main/java/com/strcat/service/BoardService.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class BoardService {
public String createBoard(CreateBoardReqDto dto, Long userId) {
Board board;
User user = userRepository.findById(userId).orElseThrow(() -> new NotAcceptableException("유저가 존재하지 않습니다."));
board = new Board(dto.getTitle(), dto.getTheme(), user);
board = new Board(dto.getTitle(), dto.getTheme(), user, dto.getIsPublic());
board = boardRepository.save(board);

String encryptedBoardId = secureDataUtils.encrypt(board.getId());
Expand Down Expand Up @@ -55,5 +55,7 @@ public ReadBoardSummaryResDto readSummary(String encryptedBoardId) {
.toReadBoardSummaryDto();
}


public List<Board> readPublicBoard() {
return boardRepository.findByIsPublicTrue();
}
}
17 changes: 17 additions & 0 deletions src/test/java/com/strcat/board/BoardServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,23 @@ class 성공 {
//then
Assertions.assertEquals(expect, result);
}

@Test
public void 공개보드조회() {
//given
CreateBoardReqDto publicDto = new CreateBoardReqDto("공개", "Green", false);
CreateBoardReqDto privateDto = new CreateBoardReqDto("비공개", "Green", true);
boardService.createBoard(publicDto, user.getId());
boardService.createBoard(privateDto, user.getId());

//when
List<Board> result = boardService.readPublicBoard();
List<Board> expect = boardRepository.findAll().stream().filter((board) -> board.getIsPublic().equals(true))
.toList();

//then
Assertions.assertEquals(expect, result);
}
}

@Nested
Expand Down

0 comments on commit ffddcc6

Please sign in to comment.