Skip to content

Commit c086497

Browse files
authored
Merge pull request #196 from YAPP-Github/BOOK-284-feature/#185
feat: 독서 기록에 대해 수정 / 삭제 기능 구현 및 기능 연결
2 parents ee1e1a2 + 0ac5e7d commit c086497

51 files changed

Lines changed: 1896 additions & 70 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Projects/BKData/Sources/API/BookAPI.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ enum BookAPI {
99
case search(dto: SearchBookRequestDTO)
1010
case guestSearch(dto: SearchBookRequestDTO)
1111
case upsert(dto: UserBookRegisterRequestDTO)
12+
case delete(bookId: String)
1213
}
1314

1415
extension BookAPI: RequestTarget {
@@ -28,6 +29,8 @@ extension BookAPI: RequestTarget {
2829
return "/guest/search"
2930
case .upsert:
3031
return "/upsert"
32+
case .delete(let bookId):
33+
return "/my-library/\(bookId)"
3134
}
3235
}
3336

@@ -37,6 +40,8 @@ extension BookAPI: RequestTarget {
3740
return .put
3841
case .detail, .myLibrary, .search, .guestSearch:
3942
return .get
43+
case .delete:
44+
return .delete
4045
}
4146
}
4247

@@ -46,14 +51,14 @@ extension BookAPI: RequestTarget {
4651
return [
4752
"Content-Type": "application/json"
4853
]
49-
case .detail, .myLibrary, .search, .guestSearch:
54+
case .detail, .myLibrary, .search, .guestSearch, .delete:
5055
return [:]
5156
}
5257
}
5358

5459
var body: Encodable? {
5560
switch self {
56-
case .detail, .myLibrary, .search, .guestSearch:
61+
case .detail, .myLibrary, .search, .guestSearch, .delete:
5762
return nil
5863
case .upsert(let dto):
5964
return dto
@@ -70,7 +75,7 @@ extension BookAPI: RequestTarget {
7075
return dto.dictionary
7176
case .guestSearch(let dto):
7277
return dto.dictionary
73-
case .upsert:
78+
case .upsert, .delete:
7479
return [:]
7580
}
7681
}

src/Projects/BKData/Sources/API/RecordAPI.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ enum RecordAPI {
88
case fetch(userBookId: String, dto: FetchRecordRequestDTO)
99
case detail(userRecordId: String)
1010
case seed(userRecordId: String)
11+
case patch(readingRecordId: String, recordData: RecordVO)
12+
case delete(readingRecordId: String)
1113
}
1214

1315
extension RecordAPI: RequestTarget {
@@ -25,6 +27,10 @@ extension RecordAPI: RequestTarget {
2527
return "/detail/\(userRecordId)"
2628
case .seed(let userRecordId):
2729
return "/\(userRecordId)/seed/stats"
30+
case .patch(let readingRecordId, _):
31+
return "/\(readingRecordId)"
32+
case .delete(let readingRecordId):
33+
return "/\(readingRecordId)"
2834
}
2935
}
3036

@@ -34,6 +40,10 @@ extension RecordAPI: RequestTarget {
3440
return .post
3541
case .fetch, .detail, .seed:
3642
return .get
43+
case .patch:
44+
return .patch
45+
case .delete:
46+
return .delete
3747
}
3848
}
3949

@@ -48,16 +58,16 @@ extension RecordAPI: RequestTarget {
4858

4959
var body: Encodable? {
5060
switch self {
51-
case .insert(_, let data):
61+
case .insert(_, let data), .patch(_, let data):
5262
return InsertRecordRequestDTO(data: data)
53-
case .fetch, .detail, .seed:
63+
case .fetch, .detail, .seed, .delete:
5464
return nil
5565
}
5666
}
5767

5868
var query: [String: Any] {
5969
switch self {
60-
case .insert, .seed:
70+
case .insert, .seed, .patch, .delete:
6171
return [:]
6272
case .fetch(_, let dto):
6373
return dto.toDictionary()

src/Projects/BKData/Sources/DataAssembly.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ public struct DataAssembly: Assembly {
8181
type: BookRepository.self
8282
) { _ in
8383
@Autowired(name: "OAuth") var networkProvider: NetworkProvider
84-
return DefaultBookRepository(networkProvider: networkProvider)
84+
@Autowired(name: "Default") var defaultNetworkProvider: NetworkProvider
85+
return DefaultBookRepository(
86+
networkProvider: networkProvider,
87+
defaultNetworkProvider: defaultNetworkProvider
88+
)
8589
}
8690

8791
container.register(

src/Projects/BKData/Sources/Repository/DefaultBookRepository.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import Foundation
77

88
public struct DefaultBookRepository: BookRepository {
99
private let networkProvider: NetworkProvider
10+
private let defaultNetworkProvider: NetworkProvider
1011

11-
public init(networkProvider: NetworkProvider) {
12+
public init(networkProvider: NetworkProvider, defaultNetworkProvider: NetworkProvider) {
1213
self.networkProvider = networkProvider
14+
self.defaultNetworkProvider = defaultNetworkProvider
1315
}
1416

1517
public func search(
@@ -42,7 +44,7 @@ public struct DefaultBookRepository: BookRepository {
4244
public func guestSearch(
4345
_ parameters: SearchBookParameters
4446
) -> AnyPublisher<([Book], totalResults: Int), DomainError> {
45-
networkProvider.request(
47+
defaultNetworkProvider.request(
4648
target: BookAPI.guestSearch(
4749
dto: SearchBookRequestDTO(
4850
query: parameters.query,
@@ -132,4 +134,19 @@ public struct DefaultBookRepository: BookRepository {
132134
.map { $0.toBook() }
133135
.eraseToAnyPublisher()
134136
}
137+
138+
public func delete(
139+
bookId: String
140+
) -> AnyPublisher<Void, DomainError> {
141+
networkProvider.request(
142+
target: BookAPI.delete(
143+
bookId: bookId
144+
),
145+
type: EmptyResponse.self
146+
)
147+
.mapError { $0.toDomainError() }
148+
.debugError(logger: AppLogger.network)
149+
.map { _ in }
150+
.eraseToAnyPublisher()
151+
}
135152
}

src/Projects/BKData/Sources/Repository/DefaultRecordRepository.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,36 @@ public final class DefaultRecordRepository: RecordRepository {
6262
.map { $0.toRecordInfo() }
6363
.eraseToAnyPublisher()
6464
}
65+
66+
public func patch(
67+
recordId: String,
68+
recordData: RecordVO
69+
) -> AnyPublisher<RecordInfo, DomainError> {
70+
networkProvider.request(
71+
target: RecordAPI.patch(
72+
readingRecordId: recordId,
73+
recordData: recordData
74+
),
75+
type: InsertRecordResponseDTO.self
76+
)
77+
.mapError { $0.toDomainError() }
78+
.debugError(logger: AppLogger.network)
79+
.map { $0.toRecordInfo() }
80+
.eraseToAnyPublisher()
81+
}
82+
83+
public func delete(
84+
recordId: String
85+
) -> AnyPublisher<Void, DomainError> {
86+
networkProvider.request(
87+
target: RecordAPI.delete(
88+
readingRecordId: recordId
89+
),
90+
type: EmptyResponse.self
91+
)
92+
.mapError { $0.toDomainError() }
93+
.debugError(logger: AppLogger.network)
94+
.map { _ in }
95+
.eraseToAnyPublisher()
96+
}
6597
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "share.svg",
5+
"idiom" : "universal",
6+
"scale" : "1x"
7+
},
8+
{
9+
"filename" : "share@2x.png",
10+
"idiom" : "universal",
11+
"scale" : "2x"
12+
},
13+
{
14+
"filename" : "share@3x.png",
15+
"idiom" : "universal",
16+
"scale" : "3x"
17+
}
18+
],
19+
"info" : {
20+
"author" : "xcode",
21+
"version" : 1
22+
}
23+
}
Lines changed: 3 additions & 0 deletions
Loading
569 Bytes
Loading
835 Bytes
Loading
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "trash.svg",
5+
"idiom" : "universal",
6+
"scale" : "1x"
7+
},
8+
{
9+
"filename" : "trash@2x.png",
10+
"idiom" : "universal",
11+
"scale" : "2x"
12+
},
13+
{
14+
"filename" : "trash@3x.png",
15+
"idiom" : "universal",
16+
"scale" : "3x"
17+
}
18+
],
19+
"info" : {
20+
"author" : "xcode",
21+
"version" : 1
22+
}
23+
}

0 commit comments

Comments
 (0)