Skip to content

Commit 72d7512

Browse files
committed
feat: 밈 생성시 해시태그를 json 형식으로 저장한다
1 parent d0a0856 commit 72d7512

File tree

3 files changed

+40
-19
lines changed

3 files changed

+40
-19
lines changed

src/main/java/spring/memewikibe/application/MemeCreateService.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.transaction.annotation.Transactional;
77
import org.springframework.web.multipart.MultipartFile;
88
import spring.memewikibe.api.controller.meme.request.MemeCreateRequest;
9+
import spring.memewikibe.common.util.HashtagParser;
910
import spring.memewikibe.domain.meme.Meme;
1011
import spring.memewikibe.domain.meme.MemeCategory;
1112
import spring.memewikibe.infrastructure.CategoryRepository;
@@ -27,29 +28,29 @@ public class MemeCreateService {
2728

2829
public long createMeme(MemeCreateRequest request, MultipartFile imageFile) {
2930
String imageUrl = imageUploadService.uploadImage(imageFile);
30-
31+
3132
Meme meme = Meme.builder()
32-
.title(request.title())
33-
.origin(request.origin())
34-
.usageContext(request.usageContext())
35-
.trendPeriod(request.trendPeriod())
36-
.imgUrl(imageUrl)
37-
.hashtags(request.hashtags())
38-
.build();
39-
33+
.title(request.title())
34+
.origin(request.origin())
35+
.usageContext(request.usageContext())
36+
.trendPeriod(request.trendPeriod())
37+
.imgUrl(imageUrl)
38+
.hashtags(HashtagParser.toJson(request.hashtags()))
39+
.build();
40+
4041
Meme savedMeme = memeRepository.save(meme);
4142

4243
Optional.ofNullable(request.categoryIds())
43-
.filter(ids -> !ids.isEmpty())
44-
.map(categoryRepository::findAllById)
45-
.map(categories -> categories.stream()
46-
.map(category -> MemeCategory.builder()
47-
.meme(savedMeme)
48-
.category(category)
49-
.build())
50-
.toList())
51-
.ifPresent(memeCategoryRepository::saveAll);
52-
44+
.filter(ids -> !ids.isEmpty())
45+
.map(categoryRepository::findAllById)
46+
.map(categories -> categories.stream()
47+
.map(category -> MemeCategory.builder()
48+
.meme(savedMeme)
49+
.category(category)
50+
.build())
51+
.toList())
52+
.ifPresent(memeCategoryRepository::saveAll);
53+
5354
log.info("밈 생성 완료: {}", savedMeme.getId());
5455
return savedMeme.getId();
5556
}

src/main/java/spring/memewikibe/common/util/HashtagParser.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,15 @@ public static List<String> parseHashtags(String hashtagsJson) {
2222
return Collections.emptyList();
2323
}
2424
}
25+
26+
public static String toJson(String hashtags) {
27+
if (hashtags == null || hashtags.trim().isEmpty()) {
28+
return "[]";
29+
}
30+
try {
31+
return objectMapper.writeValueAsString(Collections.singletonList(hashtags));
32+
} catch (JsonProcessingException e) {
33+
return "[]";
34+
}
35+
}
2536
}

src/test/java/spring/memewikibe/common/util/HashtagParserTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,13 @@ class HashtagParserTest {
4747

4848
assertThat(result).isEmpty();
4949
}
50+
51+
@Test
52+
void Json형식으로_변환한다() {
53+
String hashtags = "#퀸은울지않아, #이효리, #화사, #댄스가수유랑단, #자존감, #명언, #걸크러쉬";
54+
55+
String result = HashtagParser.toJson(hashtags);
56+
57+
assertThat(result).isEqualTo("[\"#퀸은울지않아, #이효리, #화사, #댄스가수유랑단, #자존감, #명언, #걸크러쉬\"]");
58+
}
5059
}

0 commit comments

Comments
 (0)