Skip to content

Commit a668104

Browse files
authored
Merge pull request #304 from team-peekabook/feature/#298-duplicate-book
#298 [feat] 중복 책 등록
2 parents 0502928 + 36c3d1b commit a668104

23 files changed

+184
-27
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.sopt.peekabookaos.data.entity.request
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class BookDuplicateRequest(
7+
val bookTitle: String,
8+
val author: String,
9+
val publisher: String,
10+
)

app/src/main/java/com/sopt/peekabookaos/data/entity/request/DuplicateRequest.kt renamed to app/src/main/java/com/sopt/peekabookaos/data/entity/request/NicknameDuplicateRequest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ package com.sopt.peekabookaos.data.entity.request
22
import kotlinx.serialization.Serializable
33

44
@Serializable
5-
data class DuplicateRequest(
5+
data class NicknameDuplicateRequest(
66
val nickname: String
77
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.sopt.peekabookaos.data.entity.response
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class BookDuplicateResponse(
7+
val isDuplicate: Boolean
8+
)

app/src/main/java/com/sopt/peekabookaos/data/entity/response/DuplicateResponse.kt renamed to app/src/main/java/com/sopt/peekabookaos/data/entity/response/NicknameDuplicateResponse.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ package com.sopt.peekabookaos.data.entity.response
33
import kotlinx.serialization.Serializable
44

55
@Serializable
6-
data class DuplicateResponse(
6+
data class NicknameDuplicateResponse(
77
val check: Int
88
)

app/src/main/java/com/sopt/peekabookaos/data/repository/BookRepositoryImpl.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,14 @@ class BookRepositoryImpl @Inject constructor(
3232
description: String?,
3333
memo: String?
3434
): Result<Unit> = kotlin.runCatching { bookDataSource.patchEditBook(bookId, description, memo) }
35+
36+
override suspend fun postBookDuplicate(
37+
bookTitle: String,
38+
author: String,
39+
publisher: String
40+
): Result<Boolean> =
41+
kotlin.runCatching { bookDataSource.postBookDuplicate(bookTitle, author, publisher) }
42+
.map { response ->
43+
requireNotNull(response.data).isDuplicate
44+
}
3545
}

app/src/main/java/com/sopt/peekabookaos/data/repository/UserInputRepositoryImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import javax.inject.Inject
99
class UserInputRepositoryImpl @Inject constructor(
1010
private val userInputDataSource: UserInputDataSource
1111
) : UserInputRepository {
12-
override suspend fun postDuplicate(
12+
override suspend fun postNicknameDuplicate(
1313
nickname: String
1414
): Result<Int> =
1515
kotlin.runCatching {
16-
userInputDataSource.postDuplicate(
16+
userInputDataSource.postNicknameDuplicate(
1717
nickname
1818
)
1919
}.map { response -> requireNotNull(response.data).check }

app/src/main/java/com/sopt/peekabookaos/data/service/BookService.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.sopt.peekabookaos.data.service
22

33
import com.sopt.peekabookaos.data.entity.BaseResponse
44
import com.sopt.peekabookaos.data.entity.NoResponse
5+
import com.sopt.peekabookaos.data.entity.request.BookDuplicateRequest
56
import com.sopt.peekabookaos.data.entity.request.CreateBookRequest
67
import com.sopt.peekabookaos.data.entity.request.EditBookRequest
8+
import com.sopt.peekabookaos.data.entity.response.BookDuplicateResponse
79
import com.sopt.peekabookaos.data.entity.response.CreateBookResponse
810
import retrofit2.http.Body
911
import retrofit2.http.PATCH
@@ -21,4 +23,9 @@ interface BookService {
2123
@Path("bookshelfId") bookId: Int,
2224
@Body bookComment: EditBookRequest
2325
): NoResponse
26+
27+
@POST("/bookshelf/duplicate")
28+
suspend fun postBookDuplicate(
29+
@Body bookDuplicateRequest: BookDuplicateRequest
30+
): BaseResponse<BookDuplicateResponse>
2431
}

app/src/main/java/com/sopt/peekabookaos/data/service/UserInputService.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package com.sopt.peekabookaos.data.service
22

33
import com.sopt.peekabookaos.data.entity.BaseResponse
44
import com.sopt.peekabookaos.data.entity.NoResponse
5-
import com.sopt.peekabookaos.data.entity.request.DuplicateRequest
6-
import com.sopt.peekabookaos.data.entity.response.DuplicateResponse
5+
import com.sopt.peekabookaos.data.entity.request.NicknameDuplicateRequest
6+
import com.sopt.peekabookaos.data.entity.response.NicknameDuplicateResponse
77
import okhttp3.MultipartBody
88
import okhttp3.RequestBody
99
import retrofit2.http.Body
@@ -15,7 +15,7 @@ import retrofit2.http.PartMap
1515

1616
interface UserInputService {
1717
@POST("user/duplicate")
18-
suspend fun postDuplicate(@Body body: DuplicateRequest): BaseResponse<DuplicateResponse>
18+
suspend fun postDuplicate(@Body body: NicknameDuplicateRequest): BaseResponse<NicknameDuplicateResponse>
1919

2020
@Multipart
2121
@PATCH("auth/signup")

app/src/main/java/com/sopt/peekabookaos/data/source/remote/BookDataSource.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.sopt.peekabookaos.data.source.remote
22

33
import com.sopt.peekabookaos.data.entity.BaseResponse
44
import com.sopt.peekabookaos.data.entity.NoResponse
5+
import com.sopt.peekabookaos.data.entity.request.BookDuplicateRequest
56
import com.sopt.peekabookaos.data.entity.request.CreateBookRequest
67
import com.sopt.peekabookaos.data.entity.request.EditBookRequest
8+
import com.sopt.peekabookaos.data.entity.response.BookDuplicateResponse
79
import com.sopt.peekabookaos.data.entity.response.CreateBookResponse
810
import com.sopt.peekabookaos.data.service.BookService
911
import javax.inject.Inject
@@ -31,4 +33,12 @@ data class BookDataSource @Inject constructor(
3133

3234
suspend fun patchEditBook(bookId: Int, description: String?, memo: String?): NoResponse =
3335
bookService.patchEditBook(bookId, EditBookRequest(description, memo))
36+
37+
suspend fun postBookDuplicate(
38+
bookTitle: String,
39+
author: String,
40+
publisher: String
41+
): BaseResponse<BookDuplicateResponse> = bookService.postBookDuplicate(
42+
BookDuplicateRequest(bookTitle = bookTitle, author = author, publisher = publisher)
43+
)
3444
}

app/src/main/java/com/sopt/peekabookaos/data/source/remote/UserInputDataSource.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package com.sopt.peekabookaos.data.source.remote
22

33
import com.sopt.peekabookaos.data.entity.BaseResponse
44
import com.sopt.peekabookaos.data.entity.NoResponse
5-
import com.sopt.peekabookaos.data.entity.request.DuplicateRequest
6-
import com.sopt.peekabookaos.data.entity.response.DuplicateResponse
5+
import com.sopt.peekabookaos.data.entity.request.NicknameDuplicateRequest
6+
import com.sopt.peekabookaos.data.entity.response.NicknameDuplicateResponse
77
import com.sopt.peekabookaos.data.service.UserInputService
88
import okhttp3.MultipartBody
99
import okhttp3.RequestBody
@@ -12,10 +12,10 @@ import javax.inject.Inject
1212
data class UserInputDataSource @Inject constructor(
1313
private val userInputService: UserInputService
1414
) {
15-
suspend fun postDuplicate(
15+
suspend fun postNicknameDuplicate(
1616
nickname: String
17-
): BaseResponse<DuplicateResponse> = userInputService.postDuplicate(
18-
DuplicateRequest(
17+
): BaseResponse<NicknameDuplicateResponse> = userInputService.postDuplicate(
18+
NicknameDuplicateRequest(
1919
nickname = nickname
2020
)
2121
)

0 commit comments

Comments
 (0)