1
1
package in .koreatech .koin .domain .community .dto ;
2
2
3
+ import static io .swagger .v3 .oas .annotations .media .Schema .RequiredMode .NOT_REQUIRED ;
4
+ import static io .swagger .v3 .oas .annotations .media .Schema .RequiredMode .REQUIRED ;
5
+
3
6
import java .time .LocalDateTime ;
4
7
import java .util .List ;
5
8
15
18
16
19
@ JsonNaming (SnakeCaseStrategy .class )
17
20
public record ArticleResponse (
18
- @ Schema (description = "게시글 고유 ID" , example = "1" )
21
+ @ Schema (description = "게시글 고유 ID" , example = "1" , requiredMode = REQUIRED )
19
22
Integer id ,
20
23
21
- @ Schema (description = "게시판 고유 ID" , example = "1" )
24
+ @ Schema (description = "게시판 고유 ID" , example = "1" , requiredMode = REQUIRED )
22
25
Integer boardId ,
23
26
24
- @ Schema (description = "제목" , example = "제목" )
27
+ @ Schema (description = "제목" , example = "제목" , requiredMode = REQUIRED )
25
28
String title ,
26
29
27
- @ Schema (description = "내용" , example = "내용" )
30
+ @ Schema (description = "내용" , example = "내용" , requiredMode = REQUIRED )
28
31
String content ,
29
32
30
- @ Schema (description = "작성자 닉네임" , example = "닉네임" )
33
+ @ Schema (description = "작성자 닉네임" , example = "닉네임" , requiredMode = REQUIRED )
31
34
String nickname ,
32
35
33
- @ Schema (description = "해결 여부" , example = "false" )
34
- Boolean isSolved ,
36
+ @ Schema (description = "해결 여부" , example = "false" , requiredMode = REQUIRED )
37
+ boolean isSolved ,
35
38
36
- @ Schema (description = "공지 여부" , example = "false" )
37
- Boolean isNotice ,
39
+ @ Schema (description = "공지 여부" , example = "false" , requiredMode = REQUIRED )
40
+ boolean isNotice ,
38
41
39
- @ Schema (description = "내용 요약" , example = "내용 요약" )
42
+ @ Schema (description = "내용 요약" , example = "내용 요약" , requiredMode = NOT_REQUIRED )
40
43
@ JsonProperty ("contentSummary" ) String contentSummary ,
41
44
42
- @ Schema (description = "조회수" , example = "1" )
43
- Integer hit ,
45
+ @ Schema (description = "조회수" , example = "1" , requiredMode = REQUIRED )
46
+ int hit ,
44
47
45
- @ Schema (description = "댓글 수" , example = "1" )
46
- Byte commentCount ,
48
+ @ Schema (description = "댓글 수" , example = "1" , requiredMode = REQUIRED )
49
+ int commentCount ,
47
50
48
- @ Schema (description = "게시판 정보" )
51
+ @ Schema (description = "게시판 정보" , requiredMode = REQUIRED )
49
52
InnerBoardResponse board ,
50
53
51
- @ Schema (description = "댓글 목록" )
54
+ @ Schema (description = "댓글 목록" , requiredMode = NOT_REQUIRED )
52
55
List <InnerCommentResponse > comments ,
53
56
54
57
@ Schema (description = "생성 일자" , example = "2023-01-04 12:00:01" )
@@ -79,41 +82,43 @@ public static ArticleResponse of(Article article) {
79
82
80
83
@ JsonNaming (value = SnakeCaseStrategy .class )
81
84
private record InnerBoardResponse (
82
- @ Schema (description = "게시판 고유 ID" , example = "1" )
85
+ @ Schema (description = "게시판 고유 ID" , example = "1" , requiredMode = REQUIRED )
83
86
Integer id ,
84
87
85
- @ Schema (description = "게시판 태그" , example = "tag" )
88
+ @ Schema (description = "게시판 태그" , example = "tag" , requiredMode = REQUIRED )
86
89
String tag ,
87
90
88
- @ Schema (description = "게시판 이름" , example = "게시판 이름" )
91
+ @ Schema (description = "게시판 이름" , example = "게시판 이름" , requiredMode = REQUIRED )
89
92
String name ,
90
93
91
- @ Schema (description = "익명 여부" , example = "false" )
94
+ @ Schema (description = "익명 여부" , example = "false" , requiredMode = REQUIRED )
92
95
boolean isAnonymous ,
93
96
94
- @ Schema (description = "게시글 수" , example = "1" )
95
- Integer articleCount ,
97
+ @ Schema (description = "게시글 수" , example = "1" , requiredMode = REQUIRED )
98
+ int articleCount ,
96
99
97
- @ Schema (description = "삭제 여부" , example = "false" )
100
+ @ Schema (description = "삭제 여부" , example = "false" , requiredMode = REQUIRED )
98
101
boolean isDeleted ,
99
102
100
- @ Schema (description = "공지 여부" , example = "false" )
103
+ @ Schema (description = "공지 여부" , example = "false" , requiredMode = REQUIRED )
101
104
boolean isNotice ,
102
105
103
- @ Schema (description = "부모 게시판 고유 ID" , example = "1" )
106
+ @ Schema (description = "부모 게시판 고유 ID" , example = "1" , requiredMode = NOT_REQUIRED )
104
107
Integer parentId ,
105
108
106
- @ Schema (description = "순서" , example = "1" )
107
- Integer seq ,
109
+ @ Schema (description = "순서" , example = "1" , requiredMode = REQUIRED )
110
+ int seq ,
108
111
109
- @ Schema (description = "하위 게시판 목록" )
112
+ @ Schema (description = "하위 게시판 목록" , requiredMode = NOT_REQUIRED )
110
113
List <InnerBoardResponse > children ,
111
114
112
- @ Schema (description = "생성 일자" , example = "2023-01-04 12:00:01" )
113
- @ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) LocalDateTime createdAt ,
115
+ @ Schema (description = "생성 일자" , example = "2023-01-04 12:00:01" , requiredMode = REQUIRED )
116
+ @ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" )
117
+ LocalDateTime createdAt ,
114
118
115
- @ Schema (description = "수정 일자" , example = "2023-01-04 12:00:01" )
116
- @ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) LocalDateTime updatedAt
119
+ @ Schema (description = "수정 일자" , example = "2023-01-04 12:00:01" , requiredMode = REQUIRED )
120
+ @ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" )
121
+ LocalDateTime updatedAt
117
122
) {
118
123
119
124
public static InnerBoardResponse from (Board board ) {
@@ -137,34 +142,36 @@ public static InnerBoardResponse from(Board board) {
137
142
138
143
@ JsonNaming (value = SnakeCaseStrategy .class )
139
144
private record InnerCommentResponse (
140
- @ Schema (description = "댓글 고유 ID" , example = "1" )
145
+ @ Schema (description = "댓글 고유 ID" , example = "1" , requiredMode = NOT_REQUIRED )
141
146
Integer id ,
142
147
143
- @ Schema (description = "게시글 고유 ID" , example = "1" )
148
+ @ Schema (description = "게시글 고유 ID" , example = "1" , requiredMode = REQUIRED )
144
149
Integer articleId ,
145
150
146
- @ Schema (description = "내용" , example = "내용" )
151
+ @ Schema (description = "내용" , example = "내용" , requiredMode = REQUIRED )
147
152
String content ,
148
153
149
- @ Schema (description = "작성자 고유 ID" , example = "1" )
154
+ @ Schema (description = "작성자 고유 ID" , example = "1" , requiredMode = REQUIRED )
150
155
Integer userId ,
151
156
152
- @ Schema (description = "작성자 닉네임" , example = "닉네임" )
157
+ @ Schema (description = "작성자 닉네임" , example = "닉네임" , requiredMode = REQUIRED )
153
158
String nickname ,
154
159
155
- @ Schema (description = "삭제 여부" , example = "false" )
156
- Boolean isDeleted ,
160
+ @ Schema (description = "삭제 여부" , example = "false" , requiredMode = REQUIRED )
161
+ boolean isDeleted ,
157
162
158
- @ Schema (description = "수정 권한" , example = "false" )
159
- @ JsonProperty ("grantEdit" ) Boolean grantEdit ,
163
+ @ Schema (description = "수정 권한" , example = "false" , requiredMode = REQUIRED )
164
+ @ JsonProperty ("grantEdit" )
165
+ boolean grantEdit ,
160
166
161
- @ Schema (description = "삭제 권한" , example = "false" )
162
- @ JsonProperty ("grantDelete" ) Boolean grantDelete ,
167
+ @ Schema (description = "삭제 권한" , example = "false" , requiredMode = REQUIRED )
168
+ @ JsonProperty ("grantDelete" )
169
+ boolean grantDelete ,
163
170
164
- @ Schema (description = "생성 일자" , example = "2023-01-04 12:00:01" )
171
+ @ Schema (description = "생성 일자" , example = "2023-01-04 12:00:01" , requiredMode = REQUIRED )
165
172
@ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) LocalDateTime createdAt ,
166
173
167
- @ Schema (description = "수정 일자" , example = "2023-01-04 12:00:01" )
174
+ @ Schema (description = "수정 일자" , example = "2023-01-04 12:00:01" , requiredMode = REQUIRED )
168
175
@ JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss" ) LocalDateTime updatedAt
169
176
) {
170
177
@@ -176,8 +183,8 @@ public static InnerCommentResponse from(Comment comment) {
176
183
comment .getUserId (),
177
184
comment .getNickname (),
178
185
comment .getIsDeleted (),
179
- comment .getGrantEdit (),
180
- comment .getGrantDelete (),
186
+ comment .isGrantEdit (),
187
+ comment .isGrantDelete (),
181
188
comment .getCreatedAt (),
182
189
comment .getUpdatedAt ()
183
190
);
0 commit comments