Skip to content

Commit 1a30fb6

Browse files
authored
style: API Command (#232)
* Separate API * Remove data property from API * reduce codecov
1 parent 77e792a commit 1a30fb6

10 files changed

+269
-251
lines changed

.codecov.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ coverage:
44
status:
55
patch:
66
default:
7-
target: auto
7+
target: 82
88
changes: false
99
project:
1010
default:

ParseSwift.xcodeproj/project.pbxproj

+30-10
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,14 @@
419419
91B40651267A66ED00B129CD /* ParseErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B40650267A66ED00B129CD /* ParseErrorTests.swift */; };
420420
91B40652267A66ED00B129CD /* ParseErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B40650267A66ED00B129CD /* ParseErrorTests.swift */; };
421421
91B40653267A66ED00B129CD /* ParseErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B40650267A66ED00B129CD /* ParseErrorTests.swift */; };
422+
91B79AC326EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */; };
423+
91B79AC426EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */; };
424+
91B79AC526EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */; };
425+
91B79AC626EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */; };
426+
91B79AC826EE3C5D00073F2C /* API+BatchCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */; };
427+
91B79AC926EE3C5D00073F2C /* API+BatchCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */; };
428+
91B79ACA26EE3C5D00073F2C /* API+BatchCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */; };
429+
91B79ACB26EE3C5D00073F2C /* API+BatchCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */; };
422430
91BB8FCA2690AC99005A6BA5 /* QueryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91BB8FC92690AC99005A6BA5 /* QueryViewModel.swift */; };
423431
91BB8FCB2690AC99005A6BA5 /* QueryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91BB8FC92690AC99005A6BA5 /* QueryViewModel.swift */; };
424432
91BB8FCC2690AC99005A6BA5 /* QueryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91BB8FC92690AC99005A6BA5 /* QueryViewModel.swift */; };
@@ -545,10 +553,10 @@
545553
F97B463824D9C74400F4A88B /* Responses.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462D24D9C74400F4A88B /* Responses.swift */; };
546554
F97B463924D9C74400F4A88B /* Responses.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462D24D9C74400F4A88B /* Responses.swift */; };
547555
F97B463A24D9C74400F4A88B /* Responses.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462D24D9C74400F4A88B /* Responses.swift */; };
548-
F97B463B24D9C74400F4A88B /* API+Commands.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Commands.swift */; };
549-
F97B463C24D9C74400F4A88B /* API+Commands.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Commands.swift */; };
550-
F97B463D24D9C74400F4A88B /* API+Commands.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Commands.swift */; };
551-
F97B463E24D9C74400F4A88B /* API+Commands.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Commands.swift */; };
556+
F97B463B24D9C74400F4A88B /* API+Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Command.swift */; };
557+
F97B463C24D9C74400F4A88B /* API+Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Command.swift */; };
558+
F97B463D24D9C74400F4A88B /* API+Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Command.swift */; };
559+
F97B463E24D9C74400F4A88B /* API+Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B462E24D9C74400F4A88B /* API+Command.swift */; };
552560
F97B464624D9C78B00F4A88B /* ParseOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B464024D9C78B00F4A88B /* ParseOperation.swift */; };
553561
F97B464724D9C78B00F4A88B /* ParseOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B464024D9C78B00F4A88B /* ParseOperation.swift */; };
554562
F97B464824D9C78B00F4A88B /* ParseOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B464024D9C78B00F4A88B /* ParseOperation.swift */; };
@@ -771,6 +779,8 @@
771779
918CED5D268618C600CFDC83 /* ParseLiveQueryCombineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseLiveQueryCombineTests.swift; sourceTree = "<group>"; };
772780
9194657724F16E330070296B /* ParseACLTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseACLTests.swift; sourceTree = "<group>"; };
773781
91B40650267A66ED00B129CD /* ParseErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseErrorTests.swift; sourceTree = "<group>"; };
782+
91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "API+NonParseBodyCommand.swift"; sourceTree = "<group>"; };
783+
91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "API+BatchCommand.swift"; sourceTree = "<group>"; };
774784
91BB8FC92690AC99005A6BA5 /* QueryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryViewModel.swift; sourceTree = "<group>"; };
775785
91BB8FCE2690BA70005A6BA5 /* QueryObservable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryObservable.swift; sourceTree = "<group>"; };
776786
91BB8FD32690D586005A6BA5 /* ParseQueryViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseQueryViewModelTests.swift; sourceTree = "<group>"; };
@@ -804,7 +814,7 @@
804814
F97B462B24D9C74400F4A88B /* BatchUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUtils.swift; sourceTree = "<group>"; };
805815
F97B462C24D9C74400F4A88B /* URLSession+extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLSession+extensions.swift"; sourceTree = "<group>"; };
806816
F97B462D24D9C74400F4A88B /* Responses.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Responses.swift; sourceTree = "<group>"; };
807-
F97B462E24D9C74400F4A88B /* API+Commands.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "API+Commands.swift"; sourceTree = "<group>"; };
817+
F97B462E24D9C74400F4A88B /* API+Command.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "API+Command.swift"; sourceTree = "<group>"; };
808818
F97B464024D9C78B00F4A88B /* ParseOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParseOperation.swift; sourceTree = "<group>"; };
809819
F97B464124D9C78B00F4A88B /* Delete.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Delete.swift; sourceTree = "<group>"; };
810820
F97B464224D9C78B00F4A88B /* Add.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Add.swift; sourceTree = "<group>"; };
@@ -1292,7 +1302,9 @@
12921302
isa = PBXGroup;
12931303
children = (
12941304
F97B462624D9C72700F4A88B /* API.swift */,
1295-
F97B462E24D9C74400F4A88B /* API+Commands.swift */,
1305+
91B79AC726EE3C5D00073F2C /* API+BatchCommand.swift */,
1306+
F97B462E24D9C74400F4A88B /* API+Command.swift */,
1307+
91B79AC226EE3A4E00073F2C /* API+NonParseBodyCommand.swift */,
12961308
F97B462B24D9C74400F4A88B /* BatchUtils.swift */,
12971309
7003972925A3B0130052CB31 /* ParseURLSessionDelegate.swift */,
12981310
F97B462D24D9C74400F4A88B /* Responses.swift */,
@@ -1778,8 +1790,10 @@
17781790
F97B465F24D9C7B500F4A88B /* KeychainStore.swift in Sources */,
17791791
70170A442656B02D0070C905 /* ParseAnalytics.swift in Sources */,
17801792
70110D52250680140091CC1D /* ParseConstants.swift in Sources */,
1793+
91B79AC326EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */,
17811794
70D1BDBA25BB17A600A42E7C /* ParseConfig.swift in Sources */,
17821795
F97B465224D9C78C00F4A88B /* AddUnique.swift in Sources */,
1796+
91B79AC826EE3C5D00073F2C /* API+BatchCommand.swift in Sources */,
17831797
91679D64268E596300F71809 /* ParseVersion.swift in Sources */,
17841798
91285B1C26990D7F0051B544 /* ParsePolygon.swift in Sources */,
17851799
91BB8FCA2690AC99005A6BA5 /* QueryViewModel.swift in Sources */,
@@ -1798,7 +1812,7 @@
17981812
7044C1AD25C4FC080011F6E7 /* Query+combine.swift in Sources */,
17991813
F97B45D224D9C6F200F4A88B /* AnyDecodable.swift in Sources */,
18001814
70C550A025B4A9F600B5DBC2 /* RemoveRelation.swift in Sources */,
1801-
F97B463B24D9C74400F4A88B /* API+Commands.swift in Sources */,
1815+
F97B463B24D9C74400F4A88B /* API+Command.swift in Sources */,
18021816
F97B464624D9C78B00F4A88B /* ParseOperation.swift in Sources */,
18031817
89899CCF2603CE3A002E2043 /* ParseFacebook.swift in Sources */,
18041818
705A9A2F25991C1400B3547F /* Fileable.swift in Sources */,
@@ -1947,8 +1961,10 @@
19471961
F97B466024D9C7B500F4A88B /* KeychainStore.swift in Sources */,
19481962
70170A452656B02D0070C905 /* ParseAnalytics.swift in Sources */,
19491963
70110D53250680140091CC1D /* ParseConstants.swift in Sources */,
1964+
91B79AC426EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */,
19501965
70D1BDBB25BB17A600A42E7C /* ParseConfig.swift in Sources */,
19511966
F97B465324D9C78C00F4A88B /* AddUnique.swift in Sources */,
1967+
91B79AC926EE3C5D00073F2C /* API+BatchCommand.swift in Sources */,
19521968
91679D65268E596300F71809 /* ParseVersion.swift in Sources */,
19531969
91285B1D26990D7F0051B544 /* ParsePolygon.swift in Sources */,
19541970
91BB8FCB2690AC99005A6BA5 /* QueryViewModel.swift in Sources */,
@@ -1967,7 +1983,7 @@
19671983
7044C1AE25C4FC080011F6E7 /* Query+combine.swift in Sources */,
19681984
F97B45D324D9C6F200F4A88B /* AnyDecodable.swift in Sources */,
19691985
70C550A125B4A9F600B5DBC2 /* RemoveRelation.swift in Sources */,
1970-
F97B463C24D9C74400F4A88B /* API+Commands.swift in Sources */,
1986+
F97B463C24D9C74400F4A88B /* API+Command.swift in Sources */,
19711987
F97B464724D9C78B00F4A88B /* ParseOperation.swift in Sources */,
19721988
89899CD02603CE3A002E2043 /* ParseFacebook.swift in Sources */,
19731989
705A9A3025991C1400B3547F /* Fileable.swift in Sources */,
@@ -2194,8 +2210,10 @@
21942210
F97B460524D9C6F200F4A88B /* NoBody.swift in Sources */,
21952211
70170A472656B02D0070C905 /* ParseAnalytics.swift in Sources */,
21962212
F97B45E124D9C6F200F4A88B /* AnyCodable.swift in Sources */,
2213+
91B79AC626EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */,
21972214
70D1BDBD25BB17A600A42E7C /* ParseConfig.swift in Sources */,
21982215
F97B45E524D9C6F200F4A88B /* AnyEncodable.swift in Sources */,
2216+
91B79ACB26EE3C5D00073F2C /* API+BatchCommand.swift in Sources */,
21992217
91679D67268E596300F71809 /* ParseVersion.swift in Sources */,
22002218
91285B1F26990D7F0051B544 /* ParsePolygon.swift in Sources */,
22012219
91BB8FCD2690AC99005A6BA5 /* QueryViewModel.swift in Sources */,
@@ -2260,7 +2278,7 @@
22602278
F97B461524D9C6F200F4A88B /* Savable.swift in Sources */,
22612279
F97B462524D9C6F200F4A88B /* ParseKeyValueStore.swift in Sources */,
22622280
F97B466224D9C7B500F4A88B /* KeychainStore.swift in Sources */,
2263-
F97B463E24D9C74400F4A88B /* API+Commands.swift in Sources */,
2281+
F97B463E24D9C74400F4A88B /* API+Command.swift in Sources */,
22642282
F97B462A24D9C72700F4A88B /* API.swift in Sources */,
22652283
F97B463224D9C74400F4A88B /* BatchUtils.swift in Sources */,
22662284
7016ED6725C4C46B00038648 /* ParseObject+combine.swift in Sources */,
@@ -2294,8 +2312,10 @@
22942312
F97B460424D9C6F200F4A88B /* NoBody.swift in Sources */,
22952313
70170A462656B02D0070C905 /* ParseAnalytics.swift in Sources */,
22962314
F97B45E024D9C6F200F4A88B /* AnyCodable.swift in Sources */,
2315+
91B79AC526EE3A4E00073F2C /* API+NonParseBodyCommand.swift in Sources */,
22972316
70D1BDBC25BB17A600A42E7C /* ParseConfig.swift in Sources */,
22982317
F97B45E424D9C6F200F4A88B /* AnyEncodable.swift in Sources */,
2318+
91B79ACA26EE3C5D00073F2C /* API+BatchCommand.swift in Sources */,
22992319
91679D66268E596300F71809 /* ParseVersion.swift in Sources */,
23002320
91285B1E26990D7F0051B544 /* ParsePolygon.swift in Sources */,
23012321
91BB8FCC2690AC99005A6BA5 /* QueryViewModel.swift in Sources */,
@@ -2360,7 +2380,7 @@
23602380
F97B461424D9C6F200F4A88B /* Savable.swift in Sources */,
23612381
F97B462424D9C6F200F4A88B /* ParseKeyValueStore.swift in Sources */,
23622382
F97B466124D9C7B500F4A88B /* KeychainStore.swift in Sources */,
2363-
F97B463D24D9C74400F4A88B /* API+Commands.swift in Sources */,
2383+
F97B463D24D9C74400F4A88B /* API+Command.swift in Sources */,
23642384
F97B462924D9C72700F4A88B /* API.swift in Sources */,
23652385
F97B463124D9C74400F4A88B /* BatchUtils.swift in Sources */,
23662386
7016ED6625C4C46B00038648 /* ParseObject+combine.swift in Sources */,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
// API+BatchCommand.swift
3+
// ParseSwift
4+
//
5+
// Created by Corey Baker on 9/12/21.
6+
// Copyright © 2021 Parse Community. All rights reserved.
7+
//
8+
9+
import Foundation
10+
#if canImport(FoundationNetworking)
11+
import FoundationNetworking
12+
#endif
13+
14+
internal extension API {
15+
// MARK: API.BatchCommand
16+
struct BatchCommand<T, U>: Encodable where T: Encodable {
17+
typealias ReturnType = U // swiftlint:disable:this nesting
18+
let method: API.Method
19+
let path: API.Endpoint
20+
let body: T?
21+
let mapper: ((BaseObjectable) throws -> U)
22+
23+
init(method: API.Method,
24+
path: API.Endpoint,
25+
body: T? = nil,
26+
mapper: @escaping ((BaseObjectable) throws -> U)) {
27+
self.method = method
28+
self.path = path
29+
self.body = body
30+
self.mapper = mapper
31+
}
32+
33+
enum CodingKeys: String, CodingKey { // swiftlint:disable:this nesting
34+
case method, body, path
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)