diff --git a/apis/src/main/kotlin/org/yapp/apis/book/dto/response/BookSearchResponse.kt b/apis/src/main/kotlin/org/yapp/apis/book/dto/response/BookSearchResponse.kt index a3fb953b..4a75bb9d 100644 --- a/apis/src/main/kotlin/org/yapp/apis/book/dto/response/BookSearchResponse.kt +++ b/apis/src/main/kotlin/org/yapp/apis/book/dto/response/BookSearchResponse.kt @@ -19,6 +19,22 @@ data class BookSearchResponse private constructor( val searchCategoryName: String?, val books: List ) { + fun from(updatedBooks: List): BookSearchResponse { + return BookSearchResponse( + version = this.version, + title = this.title, + link = this.link, + pubDate = this.pubDate, + totalResults = this.totalResults, + startIndex = this.startIndex, + itemsPerPage = this.itemsPerPage, + query = this.query, + searchCategoryId = this.searchCategoryId, + searchCategoryName = this.searchCategoryName, + books = updatedBooks + ) + } + companion object { fun from(response: AladinSearchResponse): BookSearchResponse { val books = response.item?.mapNotNull { BookSummary.fromAladinItem(it) } ?: emptyList() @@ -62,7 +78,7 @@ data class BookSearchResponse private constructor( author = item.author, publisher = item.publisher, coverImageUrl = item.cover, - userBookStatus = BookStatus.BEFORE_READING + userBookStatus = BookStatus.BEFORE_REGISTRATION ) } } diff --git a/apis/src/main/kotlin/org/yapp/apis/book/usecase/BookUseCase.kt b/apis/src/main/kotlin/org/yapp/apis/book/usecase/BookUseCase.kt index 6be48d7f..70b21871 100644 --- a/apis/src/main/kotlin/org/yapp/apis/book/usecase/BookUseCase.kt +++ b/apis/src/main/kotlin/org/yapp/apis/book/usecase/BookUseCase.kt @@ -43,12 +43,14 @@ class BookUseCase( val userBooksReponse = userBookService.findAllByUserIdAndBookIsbnIn(UserBooksByIsbnsRequest.of(userId, isbns)) val statusMap = userBooksReponse.associateBy({ it.bookIsbn }, { it.status }) - searchResponse.books.forEach { bookSummary -> + + val updatedBooks = searchResponse.books.map { bookSummary -> statusMap[bookSummary.isbn]?.let { status -> bookSummary.updateStatus(status) - } + } ?: bookSummary } - return searchResponse + + return searchResponse.from(updatedBooks) } fun getBookDetail(bookDetailRequest: BookDetailRequest): BookDetailResponse { diff --git a/domain/src/main/kotlin/org/yapp/domain/userbook/BookStatus.kt b/domain/src/main/kotlin/org/yapp/domain/userbook/BookStatus.kt index 6358bb3b..95499461 100644 --- a/domain/src/main/kotlin/org/yapp/domain/userbook/BookStatus.kt +++ b/domain/src/main/kotlin/org/yapp/domain/userbook/BookStatus.kt @@ -1,6 +1,7 @@ package org.yapp.domain.userbook enum class BookStatus { + BEFORE_REGISTRATION, // 등록 전 BEFORE_READING, // 읽기 전 READING, // 읽는 중 COMPLETED // 완독