Skip to content

Commit d60c772

Browse files
authored
feat: 게시글 CRUD 코드 수정 (#97)
* feat: 게시글 CRUD 코드 수정 * chore: 어노테이션 추가삭제, 객체에게 검증 수정 * chore: 긴 ENUM 값 수정 * chore: Transactional 추가
1 parent f5b258e commit d60c772

20 files changed

+187
-102
lines changed

src/main/java/org/myteam/server/board/controller/BoardController.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,6 @@ public ResponseEntity<ResponseDto<BoardResponse>> updateBoard(
5555
return ResponseEntity.ok(new ResponseDto<>(SUCCESS.name(), "게시글 수정 성공", response));
5656
}
5757

58-
/**
59-
* 게시글 상세 조회
60-
*/
61-
@GetMapping("/{boardId}")
62-
public ResponseEntity<ResponseDto<BoardResponse>> getBoard(@PathVariable final Long boardId) {
63-
final BoardResponse response = boardService.getBoard(boardId);
64-
return ResponseEntity.ok(new ResponseDto<>(SUCCESS.name(), "게시글 조회 성공", response));
65-
}
66-
6758
/**
6859
* 게시글 삭제
6960
*/
@@ -73,4 +64,13 @@ public ResponseEntity<ResponseDto<Void>> deleteBoard(@PathVariable final Long bo
7364
boardService.deleteBoard(boardId, userDetails);
7465
return ResponseEntity.ok(new ResponseDto<>(SUCCESS.name(), "게시글 삭제 성공", null));
7566
}
67+
68+
/**
69+
* 게시글 상세 조회
70+
*/
71+
@GetMapping("/{boardId}")
72+
public ResponseEntity<ResponseDto<BoardResponse>> getBoard(@PathVariable final Long boardId) {
73+
final BoardResponse response = boardService.getBoard(boardId);
74+
return ResponseEntity.ok(new ResponseDto<>(SUCCESS.name(), "게시글 조회 성공", response));
75+
}
7676
}

src/main/java/org/myteam/server/board/controller/reponse/BoardResponse.java

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,22 @@
33
import java.time.LocalDateTime;
44
import lombok.Getter;
55
import lombok.Setter;
6-
import org.myteam.server.board.entity.Board;
7-
import org.myteam.server.board.entity.BoardCount;
6+
import org.myteam.server.board.domain.Board;
7+
import org.myteam.server.board.domain.BoardCount;
8+
import org.myteam.server.board.domain.BoardType;
9+
import org.myteam.server.board.domain.CategoryType;
810

911
@Getter
1012
@Setter
1113
public class BoardResponse {
1214
/**
13-
* 카테고리 부모 id
15+
* 게시판 타입
1416
*/
15-
private Long categoryParentId;
17+
private BoardType boardType;
1618
/**
17-
* 카테고리 부모 명
19+
* 카테고리 타입
1820
*/
19-
private String categoryParentName;
20-
/**
21-
* 카테고리 id
22-
*/
23-
private Long categoryId;
24-
/**
25-
* 카테고리명
26-
*/
27-
private String categoryName;
21+
private CategoryType categoryType;
2822
/**
2923
* 게시글 id
3024
*/
@@ -71,11 +65,9 @@ public class BoardResponse {
7165
private LocalDateTime updatedAt;
7266

7367
public BoardResponse(Board board, BoardCount boardCount) {
68+
this.boardType = board.getBoardType();
69+
this.categoryType = board.getCategoryType();
7470
this.boardId = board.getId();
75-
this.categoryParentId = board.getCategory().getCategoryParentId();
76-
this.categoryParentName = board.getCategory().getParentCategoryName();
77-
this.categoryId = board.getCategory().getId();
78-
this.categoryName = board.getCategory().getName();
7971
this.authorId = board.getMember().getId();
8072
this.clientIp = board.getCreatedIp();
8173
this.title = board.getTitle();
@@ -87,4 +79,4 @@ public BoardResponse(Board board, BoardCount boardCount) {
8779
this.createdAt = board.getCreatedAt();
8880
this.updatedAt = board.getUpdatedAt();
8981
}
90-
}
82+
}

src/main/java/org/myteam/server/board/controller/reponse/CategoryResponse.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package org.myteam.server.board.controller.reponse;
22

3-
import lombok.Getter;
4-
import org.myteam.server.board.entity.Category;
5-
63
import java.util.List;
74
import java.util.stream.Collectors;
5+
import lombok.Getter;
6+
import org.myteam.server.board.domain.Category;
87

98
@Getter
109
public class CategoryResponse {
@@ -16,7 +15,8 @@ public class CategoryResponse {
1615
private List<CategoryResponse> children;
1716
private String link;
1817

19-
public CategoryResponse(Long id, String name, Integer orderIndex, Integer depth, Long parentId, List<CategoryResponse> children, String link) {
18+
public CategoryResponse(Long id, String name, Integer orderIndex, Integer depth, Long parentId,
19+
List<CategoryResponse> children, String link) {
2020
this.id = id;
2121
this.name = name;
2222
this.orderIndex = orderIndex;
@@ -37,7 +37,9 @@ public CategoryResponse(final Category categoryEntity) {
3737
}
3838

3939
public static CategoryResponse fromWithoutChildren(Category entity) {
40-
if (entity == null) return null;
40+
if (entity == null) {
41+
return null;
42+
}
4143

4244
return new CategoryResponse(
4345
entity.getId(),

src/main/java/org/myteam/server/board/entity/Board.java renamed to src/main/java/org/myteam/server/board/domain/Board.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
package org.myteam.server.board.entity;
1+
package org.myteam.server.board.domain;
22

33
import jakarta.persistence.CascadeType;
44
import jakarta.persistence.Entity;
5+
import jakarta.persistence.EnumType;
6+
import jakarta.persistence.Enumerated;
57
import jakarta.persistence.FetchType;
68
import jakarta.persistence.GeneratedValue;
79
import jakarta.persistence.GenerationType;
@@ -32,9 +34,11 @@ public class Board {
3234
@JoinColumn(name = "member_id")
3335
private Member member;
3436

35-
@ManyToOne(fetch = FetchType.LAZY)
36-
@JoinColumn(name = "category_id")
37-
private Category category;
37+
@Enumerated(EnumType.STRING)
38+
private BoardType boardType;
39+
40+
@Enumerated(EnumType.STRING)
41+
private CategoryType categoryType;
3842

3943
private String title;
4044

@@ -52,10 +56,12 @@ public class Board {
5256
private BoardCount boardCount;
5357

5458
@Builder
55-
public Board(Member member, Category category, String title, String content, String link, String createdIp,
59+
public Board(Member member, BoardType boardType, CategoryType categoryType, String title, String content,
60+
String link, String createdIp,
5661
BoardCount boardCount) {
5762
this.member = member;
58-
this.category = category;
63+
this.boardType = boardType;
64+
this.categoryType = categoryType;
5965
this.title = title;
6066
this.content = content;
6167
this.link = link;
@@ -65,11 +71,16 @@ public Board(Member member, Category category, String title, String content, Str
6571
this.boardCount = boardCount;
6672
}
6773

68-
public void updateBoard(BoardSaveRequest request, Category category) {
69-
this.category = category;
74+
public void updateBoard(BoardSaveRequest request) {
75+
this.boardType = request.getBoardType();
76+
this.categoryType = request.getCategoryType();
7077
this.title = request.getTitle();
7178
this.content = request.getContent();
7279
this.link = request.getLink();
7380
this.updatedAt = LocalDateTime.now();
7481
}
82+
83+
public boolean isAuthor(Member member) {
84+
return this.member.equals(member);
85+
}
7586
}

src/main/java/org/myteam/server/board/entity/BoardCount.java renamed to src/main/java/org/myteam/server/board/domain/BoardCount.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.myteam.server.board.entity;
1+
package org.myteam.server.board.domain;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.myteam.server.board.domain;
2+
3+
public enum BoardType {
4+
/**
5+
* e-sports
6+
*/
7+
E_SPORTS,
8+
/**
9+
* 야구
10+
*/
11+
BASEBALL,
12+
/**
13+
* 축구
14+
*/
15+
FOOTBALL;
16+
17+
public boolean isEsports() {
18+
return this.equals(E_SPORTS);
19+
}
20+
}

src/main/java/org/myteam/server/board/entity/Category.java renamed to src/main/java/org/myteam/server/board/domain/Category.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.myteam.server.board.entity;
1+
package org.myteam.server.board.domain;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.myteam.server.board.domain;
2+
3+
import org.myteam.server.global.exception.ErrorCode;
4+
import org.myteam.server.global.exception.PlayHiveException;
5+
6+
public enum CategoryType {
7+
/**
8+
* 자유
9+
*/
10+
FREE,
11+
/**
12+
* 질문
13+
*/
14+
QUESTION,
15+
/**
16+
* 이슈
17+
*/
18+
ISSUE,
19+
/**
20+
* 개선 요청
21+
*/
22+
SUGGESTION,
23+
/**
24+
* 전적 인증 (e-sports)
25+
*/
26+
VERIFICATION,
27+
/**
28+
* 플레이 팁 (e-sports)
29+
*/
30+
TIP;
31+
32+
public void confirmEsports() {
33+
if (this.equals(TIP) || this.equals(VERIFICATION)) {
34+
throw new PlayHiveException(ErrorCode.INVALID_TYPE);
35+
}
36+
}
37+
}

src/main/java/org/myteam/server/board/dto/BoardSaveRequest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,22 @@
44
import jakarta.validation.constraints.NotNull;
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
7-
import lombok.Setter;
7+
import org.myteam.server.board.domain.BoardType;
8+
import org.myteam.server.board.domain.CategoryType;
89

910
@Getter
10-
@Setter
1111
@NoArgsConstructor
1212
public class BoardSaveRequest {
1313
/**
14-
* 카테고리 id
14+
* 게시판 타입
15+
*/
16+
@NotNull(message = "게시판 타입을 선택해주세요")
17+
private BoardType boardType;
18+
/**
19+
* 카테고리 타입
1520
*/
1621
@NotNull(message = "카테고리를 선택해주세요")
17-
private Long categoryId;
22+
private CategoryType categoryType;
1823
/**
1924
* 제목
2025
*/

src/main/java/org/myteam/server/board/repository/BoardCountRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.myteam.server.board.repository;
22

3-
import org.myteam.server.board.entity.BoardCount;
3+
import org.myteam.server.board.domain.BoardCount;
44
import org.springframework.data.jpa.repository.JpaRepository;
55

66
public interface BoardCountRepository extends JpaRepository<BoardCount, Long> {

0 commit comments

Comments
 (0)