Skip to content

Commit f9cc16b

Browse files
committed
[BOOK-198] refactor: apis - UserBookService에서 최근 읽은 도서 조회 로직 제거 및 HomeService로 이동
1 parent e4dcdc4 commit f9cc16b

File tree

3 files changed

+39
-27
lines changed

3 files changed

+39
-27
lines changed

apis/src/main/kotlin/org/yapp/apis/book/service/UserBookService.kt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ import org.yapp.apis.book.dto.response.UserBookPageResponse
99
import org.yapp.apis.book.dto.response.UserBookResponse
1010
import org.yapp.apis.book.exception.UserBookErrorCode
1111
import org.yapp.apis.book.exception.UserBookNotFoundException
12-
import org.yapp.apis.home.dto.response.UserHomeResponse
1312
import org.yapp.domain.userbook.BookStatus
1413
import org.yapp.domain.userbook.UserBook
1514
import org.yapp.domain.userbook.UserBookDomainService
1615
import org.yapp.domain.userbook.UserBookSortType
17-
import org.yapp.domain.userbook.vo.HomeBookVO
1816
import java.util.*
1917

2018
@Service
@@ -51,29 +49,7 @@ class UserBookService(
5149
return userBooks.map { UserBookResponse.from(it) }
5250
}
5351

54-
fun findRecentReadingBooksForHome(userId: UUID, limit: Int): UserHomeResponse {
55-
val selectedBooks = selectBooksForHome(userId, limit)
56-
return UserHomeResponse.from(selectedBooks)
57-
}
58-
59-
private fun selectBooksForHome(userId: UUID, limit: Int): List<HomeBookVO> {
60-
val booksWithRecords = userBookDomainService.findBooksWithRecordsOrderByLatest(userId)
61-
62-
if (booksWithRecords.size >= limit) {
63-
return booksWithRecords.take(limit)
64-
}
65-
66-
val neededCount = limit - booksWithRecords.size
67-
val excludedBookIds = booksWithRecords.map { it.id.value }.toSet()
6852

69-
val booksWithoutRecords = userBookDomainService.findBooksWithoutRecordsByStatusPriority(
70-
userId,
71-
neededCount,
72-
excludedBookIds
73-
)
74-
75-
return booksWithRecords + booksWithoutRecords
76-
}
7753

7854
private fun findUserBooksByDynamicCondition(
7955
userId: UUID,
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.yapp.apis.home.service
2+
3+
import org.springframework.stereotype.Service
4+
import org.yapp.apis.home.dto.response.UserHomeResponse
5+
import org.yapp.domain.userbook.UserBookDomainService
6+
import org.yapp.domain.userbook.vo.HomeBookVO
7+
import java.util.*
8+
9+
@Service
10+
class HomeService(
11+
private val userBookDomainService: UserBookDomainService
12+
) {
13+
fun getUserHomeData(userId: UUID, limit: Int): UserHomeResponse {
14+
val selectedBooks = selectBooksForHome(userId, limit)
15+
return UserHomeResponse.from(selectedBooks)
16+
}
17+
18+
private fun selectBooksForHome(userId: UUID, limit: Int): List<HomeBookVO> {
19+
val booksWithRecords = userBookDomainService.findBooksWithRecordsOrderByLatest(userId)
20+
21+
if (booksWithRecords.size >= limit) {
22+
return booksWithRecords.take(limit)
23+
}
24+
25+
val neededCount = limit - booksWithRecords.size
26+
val excludedBookIds = booksWithRecords.map { it.id.value }.toSet()
27+
28+
val booksWithoutRecords = userBookDomainService.findBooksWithoutRecordsByStatusPriority(
29+
userId,
30+
neededCount,
31+
excludedBookIds
32+
)
33+
34+
return booksWithRecords + booksWithoutRecords
35+
}
36+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package org.yapp.apis.home.usecase
22

33
import org.springframework.transaction.annotation.Transactional
4-
import org.yapp.apis.book.service.UserBookService
4+
import org.yapp.apis.home.service.HomeService
55
import org.yapp.apis.home.dto.response.*
66
import org.yapp.globalutils.annotation.UseCase
77
import java.util.*
88

99
@UseCase
1010
@Transactional(readOnly = true)
1111
class HomeUseCase(
12-
private val userBookService: UserBookService
12+
private val homeService: HomeService
1313
) {
1414
fun getUserHomeData(userId: UUID, limit: Int = 3): UserHomeResponse {
1515
val validatedLimit = limit.coerceIn(1, 10)
16-
return userBookService.findRecentReadingBooksForHome(userId, validatedLimit)
16+
return homeService.getUserHomeData(userId, validatedLimit)
1717
}
1818
}

0 commit comments

Comments
 (0)