11package com .back .global .initdata ;
22
3+ import com .back .domain .comment .entity .Comment ;
4+ import com .back .domain .comment .repository .CommentRepository ;
35import com .back .domain .node .dto .PivotListDto ;
46import com .back .domain .node .dto .base .BaseLineBulkCreateRequest ;
57import com .back .domain .node .dto .base .BaseLineBulkCreateResponse ;
810import com .back .domain .node .dto .decision .DecisionNodeNextRequest ;
911import com .back .domain .node .entity .NodeCategory ;
1012import com .back .domain .node .service .NodeService ;
11- import com .back .domain .user .entity .*;
13+ import com .back .domain .post .entity .Post ;
14+ import com .back .domain .post .enums .PostCategory ;
15+ import com .back .domain .post .repository .PostRepository ;
16+ import com .back .domain .user .entity .Gender ;
17+ import com .back .domain .user .entity .Mbti ;
18+ import com .back .domain .user .entity .Role ;
19+ import com .back .domain .user .entity .User ;
1220import com .back .domain .user .repository .UserRepository ;
1321import lombok .RequiredArgsConstructor ;
1422import org .springframework .boot .CommandLineRunner ;
1523import org .springframework .security .crypto .password .PasswordEncoder ;
1624import org .springframework .stereotype .Component ;
1725
1826import java .time .LocalDateTime ;
27+ import java .util .ArrayList ;
1928import java .util .List ;
29+ import java .util .UUID ;
2030
2131/**
2232 * [요약] 기동 시 admin·user1 생성 → user1에 베이스라인(총7: 헤더+피벗5+테일) 1개와 결정라인(총5 노드) 1개 시드 주입.
33+ * 게시글 30개(일반20 + 투표10)과 댓글 14개(마지막 2개 글에 각 7개) 생성.
2334 */
2435@ Component
2536@ RequiredArgsConstructor
@@ -29,6 +40,9 @@ public class InitData implements CommandLineRunner {
2940 private final PasswordEncoder passwordEncoder ;
3041 private final NodeService nodeService ;
3142
43+ private final PostRepository postRepository ;
44+ private final CommentRepository commentRepository ;
45+
3246 // user1을 만들고 베이스라인(7)과 결정라인(5)을 시드로 주입한다
3347 @ Override
3448 public void run (String ... args ) {
@@ -160,5 +174,69 @@ public void run(String... args) {
160174 "프로덕션 운영 지표와 알림 체계 정착"
161175 )
162176 );
177+
178+ if (postRepository .count () > 0 ) {
179+ return ;
180+ }
181+
182+ // 잠담 게시글 20개 생성
183+ List <Post > posts = new ArrayList <>();
184+ for (int i = 1 ; i <= 20 ; i ++) {
185+ Post post = Post .builder ()
186+ .title ("일반 게시글 " + i )
187+ .content ("일반 게시글 내용 " + i )
188+ .category (PostCategory .CHAT )
189+ .user (user1 )
190+ .hide (false )
191+ .likeCount (0 )
192+ .build ();
193+ posts .add (post );
194+ }
195+
196+ // 투표 게시글 10개 생성
197+ for (int i = 1 ; i <= 10 ; i ++) {
198+ String voteContent = """
199+ {
200+ "pollUid": "%s",
201+ "options": [
202+ {"index": 1, "text": "첫 번째 옵션"},
203+ {"index": 2, "text": "두 번째 옵션"},
204+ {"index": 3, "text": "세 번째 옵션"}
205+ ]
206+ }
207+ """ .formatted (UUID .randomUUID ().toString ());
208+
209+ Post pollPost = Post .builder ()
210+ .title ("투표 게시글 " + i )
211+ .content ("투표 게시글 내용 " + i )
212+ .category (PostCategory .POLL )
213+ .user (user1 )
214+ .voteContent (voteContent )
215+ .hide (false )
216+ .likeCount (0 )
217+ .build ();
218+ posts .add (pollPost );
219+ }
220+
221+ postRepository .saveAll (posts );
222+
223+ // 마지막 2개의 게시글만 댓글 7개 작성
224+ List <Post > lastPosts = posts .subList (posts .size () - 2 , posts .size ());
225+
226+ List <Comment > comments = new ArrayList <>();
227+
228+ for (Post post : lastPosts ) {
229+ for (int i = 1 ; i <= 7 ; i ++) {
230+ Comment comment = Comment .builder ()
231+ .post (post )
232+ .user (user1 ) // 댓글 작성자
233+ .content (post .getTitle () + "에 대한 댓글 " + i )
234+ .hide (false )
235+ .likeCount (0 )
236+ .build ();
237+ comments .add (comment );
238+ }
239+ }
240+ commentRepository .saveAll (comments );
163241 }
164242}
0 commit comments