@@ -102,8 +102,36 @@ class ReadingRecordDomainService(
102102 sort : ReadingRecordSortType ? ,
103103 pageable : Pageable
104104 ): Page <ReadingRecordInfoVO > {
105- return readingRecordRepository.findReadingRecordsByDynamicCondition(userBookId, sort, pageable)
106- .map { buildReadingRecordInfoVO(it) }
105+ val readingRecordPage = readingRecordRepository.findReadingRecordsByDynamicCondition(userBookId, sort, pageable)
106+ if (readingRecordPage.isEmpty) {
107+ return Page .empty(pageable)
108+ }
109+
110+ val readingRecords = readingRecordPage.content
111+ val readingRecordIds = readingRecords.map { it.id.value }
112+
113+ val readingRecordTags = readingRecordTagRepository.findByReadingRecordIdIn(readingRecordIds)
114+ val tagIds = readingRecordTags.map { it.tagId.value }
115+ val tagsById = tagRepository.findByIds(tagIds).associateBy { it.id.value }
116+
117+ val tagsByReadingRecordId = readingRecordTags
118+ .groupBy { it.readingRecordId.value }
119+ .mapValues { (_, tags) ->
120+ tags.mapNotNull { tagsById[it.tagId.value] }
121+ }
122+
123+ val userBook = userBookRepository.findById(userBookId)
124+
125+ return readingRecordPage.map { readingRecord ->
126+ ReadingRecordInfoVO .newInstance(
127+ readingRecord = readingRecord,
128+ emotionTags = tagsByReadingRecordId[readingRecord.id.value]?.map { it.name } ? : emptyList(),
129+ bookTitle = userBook?.title,
130+ bookPublisher = userBook?.publisher,
131+ bookCoverImageUrl = userBook?.coverImageUrl,
132+ author = userBook?.author
133+ )
134+ }
107135 }
108136
109137 fun modifyReadingRecord (
0 commit comments