diff --git a/clokey-api/src/main/java/org/clokey/domain/search/document/HistoryDocument.java b/clokey-api/src/main/java/org/clokey/domain/search/document/HistoryDocument.java index bef20a5e..41a0aaf8 100644 --- a/clokey-api/src/main/java/org/clokey/domain/search/document/HistoryDocument.java +++ b/clokey-api/src/main/java/org/clokey/domain/search/document/HistoryDocument.java @@ -11,7 +11,7 @@ @Setter @Document(indexUid = "histories") @Setting( - searchableAttributes = {"hashtagNames", "categoryNames"}, + searchableAttributes = {"styleNames", "hashtagNames", "categoryNames"}, displayedAttributes = { "id", "memberId", @@ -45,6 +45,8 @@ public class HistoryDocument { private String nickname; // Member.nickname + private List styleNames; + private List hashtagNames; private List categoryNames; diff --git a/clokey-api/src/main/java/org/clokey/domain/search/repository/MeiliSearchRepositoryImpl.java b/clokey-api/src/main/java/org/clokey/domain/search/repository/MeiliSearchRepositoryImpl.java index 6b0911c2..7920448e 100644 --- a/clokey-api/src/main/java/org/clokey/domain/search/repository/MeiliSearchRepositoryImpl.java +++ b/clokey-api/src/main/java/org/clokey/domain/search/repository/MeiliSearchRepositoryImpl.java @@ -27,18 +27,18 @@ public class MeiliSearchRepositoryImpl implements SearchRepository { private static final String HISTORY_INDEX = "histories"; private static final String MEMBER_INDEX = "members"; private final MeilisearchOperations meilisearchOperations; - private final MeilisearchHistoryRepository historyRepository; - private final MeilisearchMemberRepository memberRepository; + private final MeilisearchHistoryRepository historyDocumentRepository; + private final MeilisearchMemberRepository memberDocumentRepository; // MemberDocument 관련 메서드 구현 @Override public void saveAllMembers(List documents) { - memberRepository.saveAll(documents); + memberDocumentRepository.saveAll(documents); } @Override public void deleteMember(String id) { - memberRepository.deleteById(id); + memberDocumentRepository.deleteById(id); } @Override @@ -96,12 +96,12 @@ public SliceResponse findUsersByKeyword( // HistoryDocument 관련 메서드 구현 @Override public void saveAllHistories(List documents) { - historyRepository.saveAll(documents); + historyDocumentRepository.saveAll(documents); } @Override public void deleteHistory(String id) { - historyRepository.deleteById(id); + historyDocumentRepository.deleteById(id); } @Override diff --git a/clokey-api/src/main/java/org/clokey/domain/search/service/SearchDocumentServiceImpl.java b/clokey-api/src/main/java/org/clokey/domain/search/service/SearchDocumentServiceImpl.java index 0f9930f9..abb88204 100644 --- a/clokey-api/src/main/java/org/clokey/domain/search/service/SearchDocumentServiceImpl.java +++ b/clokey-api/src/main/java/org/clokey/domain/search/service/SearchDocumentServiceImpl.java @@ -5,18 +5,12 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; -import org.clokey.domain.history.repository.HistoryClothTagRepository; -import org.clokey.domain.history.repository.HistoryHashtagRepository; -import org.clokey.domain.history.repository.HistoryImageRepository; -import org.clokey.domain.history.repository.HistoryRepository; +import org.clokey.domain.history.repository.*; import org.clokey.domain.like.repository.MemberLikeRepository; import org.clokey.domain.member.repository.MemberRepository; import org.clokey.domain.search.document.HistoryDocument; import org.clokey.domain.search.document.MemberDocument; -import org.clokey.history.entity.History; -import org.clokey.history.entity.HistoryClothTag; -import org.clokey.history.entity.HistoryHashtag; -import org.clokey.history.entity.HistoryImage; +import org.clokey.history.entity.*; import org.clokey.member.entity.Member; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,6 +23,7 @@ public class SearchDocumentServiceImpl implements SearchDocumentService { private final HistoryRepository historyRepository; private final MemberRepository memberRepository; private final MemberLikeRepository memberLikeRepository; + private final HistoryStyleRepository historyStyleRepository; private final HistoryHashtagRepository historyHashtagRepository; private final HistoryImageRepository historyImageRepository; private final HistoryClothTagRepository historyClothTagRepository; @@ -51,13 +46,16 @@ public HistoryDocument toHistoryDocument(Long historyId) { List images = historyImageRepository.findByHistoryId(historyId); String historyImageUrl = images.isEmpty() ? null : images.get(0).getImageUrl(); + // 스타일 이름 리스트 + List historyStyles = historyStyleRepository.findByHistoryId(historyId); + List styleNames = + historyStyles.stream().map(hs -> hs.getStyle().getName()).toList(); + // 해시태그 이름 리스트 List historyHashtags = historyHashtagRepository.findAllByHistoryIdWithHashtag(historyId); List hashtagNames = - historyHashtags.stream() - .map(hh -> hh.getHashtag().getName()) - .collect(Collectors.toList()); + historyHashtags.stream().map(hh -> hh.getHashtag().getName()).toList(); // 카테고리 이름 리스트 (중복 제거) Set categoryNamesSet = @@ -85,6 +83,7 @@ public HistoryDocument toHistoryDocument(Long historyId) { document.setHistoryImageUrl(historyImageUrl); document.setProfileImageUrl(member.getProfileImageUrl()); document.setNickname(member.getNickname()); + document.setStyleNames(styleNames); document.setHashtagNames(hashtagNames); document.setCategoryNames(categoryNames);