|
1 | 1 | package com.back.koreaTravelGuide.common.config |
2 | 2 |
|
| 3 | +import com.back.koreaTravelGuide.domain.user.entity.User |
| 4 | +import com.back.koreaTravelGuide.domain.user.enums.Region |
| 5 | +import com.back.koreaTravelGuide.domain.user.enums.UserRole |
| 6 | +import com.back.koreaTravelGuide.domain.user.repository.UserRepository |
3 | 7 | import org.springframework.boot.CommandLineRunner |
4 | 8 | import org.springframework.context.annotation.Bean |
5 | 9 | import org.springframework.context.annotation.Configuration |
@@ -93,4 +97,67 @@ class DevConfig { |
93 | 97 | println("=".repeat(80) + "\n") |
94 | 98 | } |
95 | 99 | } |
| 100 | + |
| 101 | + /** |
| 102 | + * dev 모드에서 더미 가이드 데이터 생성 |
| 103 | + * 서버 시작시 자동으로 가이드 2명을 데이터베이스에 추가 |
| 104 | + */ |
| 105 | + @Bean |
| 106 | + fun dummyGuideDataInitializer(userRepository: UserRepository): CommandLineRunner { |
| 107 | + return CommandLineRunner { |
| 108 | + // 생성할 더미 가이드 리스트 |
| 109 | + val dummyGuides = |
| 110 | + listOf( |
| 111 | + User( |
| 112 | + oauthProvider = "dev", |
| 113 | + oauthId = "dev-guide-001", |
| 114 | + |
| 115 | + nickname = "서울 투어 김가이드", |
| 116 | + profileImageUrl = "https://i.pravatar.cc/300?img=12", |
| 117 | + role = UserRole.GUIDE, |
| 118 | + location = Region.SEOUL, |
| 119 | + description = |
| 120 | + "안녕하세요! 서울에서 10년간 가이드 경험이 있는 김가이드입니다. " + |
| 121 | + "서울의 숨은 명소부터 핫플레이스까지 모두 안내해드릴 수 있습니다. " + |
| 122 | + "특히 한식 맛집과 전통시장 투어에 자신 있습니다!", |
| 123 | + ), |
| 124 | + User( |
| 125 | + oauthProvider = "dev", |
| 126 | + oauthId = "dev-guide-002", |
| 127 | + |
| 128 | + nickname = "부산 사하구 박가이드", |
| 129 | + profileImageUrl = "https://i.pravatar.cc/300?img=33", |
| 130 | + role = UserRole.GUIDE, |
| 131 | + location = Region.BUSAN, |
| 132 | + description = |
| 133 | + "부산 사하구 토박이 박가이드입니다! 다대포 해수욕장, 을숙도, 감천문화마을 등 " + |
| 134 | + "부산의 숨은 보석 같은 명소들을 소개해드립니다. " + |
| 135 | + "특히 사하구 맛집과 바다 뷰 카페 투어는 제가 제일 자신 있어요. 부산 사투리로 정감있게 안내해드립니다!", |
| 136 | + ), |
| 137 | + ) |
| 138 | + |
| 139 | + println("\n📝 더미 가이드 데이터 초기화 시작...") |
| 140 | + var createdCount = 0 |
| 141 | + var existingCount = 0 |
| 142 | + |
| 143 | + dummyGuides.forEach { guide -> |
| 144 | + val existing = userRepository.findByEmail(guide.email) |
| 145 | + if (existing == null) { |
| 146 | + userRepository.save(guide) |
| 147 | + createdCount++ |
| 148 | + println("\n✅ 가이드 생성 완료:") |
| 149 | + println(" 📧 Email: ${guide.email}") |
| 150 | + println(" 👤 Nickname: ${guide.nickname}") |
| 151 | + println(" 📍 Location: ${guide.location?.displayName}") |
| 152 | + } else { |
| 153 | + existingCount++ |
| 154 | + println("\n✅ 이미 존재하는 가이드: ${existing.nickname} (ID: ${existing.id})") |
| 155 | + } |
| 156 | + } |
| 157 | + |
| 158 | + println("\n📊 더미 가이드 데이터 초기화 완료!") |
| 159 | + println(" ✨ 새로 생성: ${createdCount}명") |
| 160 | + println(" ♻️ 기존 유지: ${existingCount}명") |
| 161 | + } |
| 162 | + } |
96 | 163 | } |
0 commit comments