Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import java.util.List;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.sejongisc.backend.board.dto.BoardRequest;
import org.sejongisc.backend.board.dto.BoardResponse;
import org.sejongisc.backend.board.dto.CommentRequest;
import org.sejongisc.backend.board.dto.PostRequest;
import org.sejongisc.backend.board.dto.PostResponse;
Expand Down Expand Up @@ -147,6 +149,17 @@ public ResponseEntity<Void> createBoard(
return ResponseEntity.ok().build();
}

// 게시판 생성
@Operation(
summary = "부모 게시판 목록 조회",
description = "최상위 부모 게시판들의 목록을 조회합니다."
)
@GetMapping("/parents")
public ResponseEntity<List<BoardResponse>> getParentBoards(
@AuthenticationPrincipal CustomUserDetails customUserDetails) {
return ResponseEntity.ok(postService.getParentBoards());
}

// 좋아요 토글
@Operation(
summary = "좋아요 등록 및 취소",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.sejongisc.backend.board.dto;

import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.sejongisc.backend.board.entity.Board;
import org.sejongisc.backend.user.entity.User;

@ToString
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class BoardResponse {

private UUID boardId;

private String boardName;

private User createdBy;

private UUID parentBoardId;

public static BoardResponse of(Board board) {
return BoardResponse.builder()
.boardId(board.getBoardId())
.boardName(board.getBoardName())
.createdBy(board.getCreatedBy())
.parentBoardId(board.getParentBoard() != null ? board.getParentBoard().getBoardId() : null)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package org.sejongisc.backend.board.repository;

import java.util.List;
import java.util.UUID;
import org.sejongisc.backend.board.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;

public interface BoardRepository extends JpaRepository<Board, UUID> {

List<Board> findAllByParentBoardIsNull();
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.sejongisc.backend.board.service;

import java.util.List;
import java.util.UUID;
import org.sejongisc.backend.board.dto.BoardRequest;
import org.sejongisc.backend.board.dto.BoardResponse;
import org.sejongisc.backend.board.dto.PostRequest;
import org.sejongisc.backend.board.dto.PostResponse;
import org.springframework.data.domain.Page;
Expand All @@ -28,4 +30,7 @@ public interface PostService {

// 게시판 생성
void createBoard(BoardRequest request, UUID userId);

// 부모 게시판 목록 조회
List<BoardResponse> getParentBoards();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.sejongisc.backend.board.dto.BoardRequest;
import org.sejongisc.backend.board.dto.BoardResponse;
import org.sejongisc.backend.board.dto.CommentResponse;
import org.sejongisc.backend.board.dto.PostAttachmentResponse;
import org.sejongisc.backend.board.dto.PostRequest;
Expand Down Expand Up @@ -265,6 +266,7 @@ public PostResponse getPostDetail(UUID postId, int pageNumber, int pageSize) {
}

// 게시판 생성
@Override
@Transactional
public void createBoard(BoardRequest request, UUID userId) {
User user = userRepository.findById(userId)
Expand Down Expand Up @@ -293,6 +295,17 @@ public void createBoard(BoardRequest request, UUID userId) {
boardRepository.save(board);
}

// 부모 게시판 조회
@Override
@Transactional(readOnly = true)
public List<BoardResponse> getParentBoards() {
List<Board> parentBoards = boardRepository.findAllByParentBoardIsNull();

return parentBoards.stream()
.map(BoardResponse::of)
.toList();
}

private PostResponse mapToPostResponse(Post post) {
return PostResponse.builder()
.postId(post.getPostId())
Expand Down