Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraphQLExecutionSource/DataDict/ObjectData Refactor #2990

Merged
merged 35 commits into from
May 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6dbe8eb
WIP
AnthonyMDev Apr 14, 2023
40a6f73
WIP: Run codegen
AnthonyMDev Apr 18, 2023
576219c
WIP
AnthonyMDev Apr 18, 2023
e428397
WIP: Refactor to use ObjectData wrapper protocol
AnthonyMDev Apr 24, 2023
c45ade6
WIP: Create Execution Sources
AnthonyMDev Apr 24, 2023
85ce4ee
SchemaConfiguration convert ObjectData to legacy function
AnthonyMDev Apr 27, 2023
3910152
WIP: Refactoring Tests
AnthonyMDev Apr 28, 2023
b622bdd
Cleanup
AnthonyMDev Apr 28, 2023
5134f42
Make DataDict storage CopyOnWrite
AnthonyMDev May 1, 2023
6a7a3ab
Unit test for 2944 data dict equality
AnthonyMDev May 2, 2023
82fcfff
Cleanup DataDict Storage
AnthonyMDev May 2, 2023
49e5c79
Merge branch 'main' into ObjectData-wrapper
AnthonyMDev May 4, 2023
1f56538
WIP: ObjectData SelectionSetSource tests
AnthonyMDev May 4, 2023
4bb97c7
WIP: spiking
AnthonyMDev May 4, 2023
fc1e922
ObjectData and ListData as structs
AnthonyMDev May 4, 2023
36f56c5
WIP: CacheDataExecutionSource
AnthonyMDev May 4, 2023
dda4c16
WIP: make execution source non-static
AnthonyMDev May 4, 2023
277aba9
WIP
AnthonyMDev May 9, 2023
c0fb418
WIP 2
AnthonyMDev May 9, 2023
96a3ea6
Fix error path for lists
AnthonyMDev May 9, 2023
34325f7
Remove ReferenceResolver
AnthonyMDev May 9, 2023
9dfb752
Clean up executor
AnthonyMDev May 10, 2023
07f326d
Resolve Reference in CacheData ObjectDict
AnthonyMDev May 10, 2023
260d6c4
WIP: Add Batched Loading read test
AnthonyMDev May 10, 2023
a54cbe2
WIP: refactor execution source to use existing cache keys for cache d…
AnthonyMDev May 10, 2023
f6b1d54
Refactor shouldComputeCacheKey into accumulators
AnthonyMDev May 10, 2023
3b0851a
Clean up cache key computation in FieldExecutionInfo
AnthonyMDev May 11, 2023
63f2938
Clean up API
AnthonyMDev May 11, 2023
8e10994
Add tests for Network Response Execution Source
AnthonyMDev May 11, 2023
f5f3cfc
Merge branch 'main' into ObjectData-defer-cachekey-resolution
AnthonyMDev May 11, 2023
386571d
Fix codegen tests
AnthonyMDev May 11, 2023
54d38b4
WIP: Docs updates
AnthonyMDev May 12, 2023
c05b9b0
More doc updates
AnthonyMDev May 12, 2023
3df5b2a
Add _modify to DataDict storage data accessor
AnthonyMDev May 12, 2023
63ce879
Fix test code gen configs
AnthonyMDev May 15, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Apollo.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Pod::Spec.new do |s|
CMD

s.subspec 'Core' do |ss|
ss.source_files = 'Sources/Apollo/*.swift','Sources/ApolloAPI/**/*.swift'
ss.source_files = 'Sources/Apollo/**/*.swift','Sources/ApolloAPI/**/*.swift'
end

# Apollo provides exactly one persistent cache out-of-the-box, as a reasonable default choice for
Expand Down
68 changes: 58 additions & 10 deletions Apollo.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@
<dict>
<key>ParsingPerformanceTests</key>
<dict>
<key>testMultipartResponseParsingInterceptor()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
<dict>
<key>baselineAverage</key>
<real>0.018400</real>
<key>baselineIntegrationDisplayName</key>
<string>Local Baseline</string>
</dict>
</dict>
<key>testParseResult()</key>
<dict>
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,14 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
__typename: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}

/// AsAnimal
Expand All @@ -80,14 +82,16 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
__typename: String,
species: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"species": species,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"species": species,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}

Expand All @@ -110,14 +114,16 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
__typename: String,
humanName: String? = nil
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"humanName": humanName,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"humanName": humanName,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}

Expand All @@ -142,15 +148,17 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
laysEggs: Bool,
species: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"laysEggs": laysEggs,
"species": species,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"laysEggs": laysEggs,
"species": species,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}

Expand Down Expand Up @@ -181,18 +189,20 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
humanName: String? = nil,
laysEggs: Bool
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Cat.typename,
"bodyTemperature": bodyTemperature,
"isJellicle": isJellicle,
"species": species,
"humanName": humanName,
"laysEggs": laysEggs,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Cat.typename,
"bodyTemperature": bodyTemperature,
"isJellicle": isJellicle,
"species": species,
"humanName": humanName,
"laysEggs": laysEggs,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}

Expand Down Expand Up @@ -220,17 +230,19 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
humanName: String? = nil,
laysEggs: Bool
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Bird.typename,
"wingspan": wingspan,
"species": species,
"humanName": humanName,
"laysEggs": laysEggs,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Bird.typename,
"wingspan": wingspan,
"species": species,
"humanName": humanName,
"laysEggs": laysEggs,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}

Expand All @@ -254,15 +266,17 @@ public struct ClassroomPetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
favoriteToy: String,
humanName: String? = nil
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.PetRock.typename,
"favoriteToy": favoriteToy,
"humanName": humanName,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.PetRock.typename,
"favoriteToy": favoriteToy,
"humanName": humanName,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetails.self)
])
]))
]
))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ public struct ClassroomPetDetailsCCN: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
__typename: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}

/// AsAnimal
Expand All @@ -57,14 +59,16 @@ public struct ClassroomPetDetailsCCN: AnimalKingdomAPI.SelectionSet, Fragment {
__typename: String,
height: Height
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"height": height._fieldData,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"height": height._fieldData,
],
fulfilledFragments: [
ObjectIdentifier(Self.self),
ObjectIdentifier(ClassroomPetDetailsCCN.self)
])
]))
]
))
}

/// AsAnimal.Height
Expand All @@ -85,13 +89,15 @@ public struct ClassroomPetDetailsCCN: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
inches: Int
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Height.typename,
"inches": inches,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Height.typename,
"inches": inches,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ public struct DogFragment: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
species: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Dog.typename,
"species": species,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Dog.typename,
"species": species,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@ public struct HeightInMeters: AnimalKingdomAPI.SelectionSet, Fragment {
__typename: String,
height: Height
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"height": height._fieldData,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"height": height._fieldData,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}

/// Height
Expand All @@ -56,13 +58,15 @@ public struct HeightInMeters: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
meters: Int
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Height.typename,
"meters": meters,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Height.typename,
"meters": meters,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,17 @@ public struct PetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
favoriteToy: String,
owner: Owner? = nil
) {
self.init(_dataDict: DataDict(data: [
"__typename": __typename,
"humanName": humanName,
"favoriteToy": favoriteToy,
"owner": owner._fieldData,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": __typename,
"humanName": humanName,
"favoriteToy": favoriteToy,
"owner": owner._fieldData,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}

/// Owner
Expand All @@ -66,13 +68,15 @@ public struct PetDetails: AnimalKingdomAPI.SelectionSet, Fragment {
public init(
firstName: String
) {
self.init(_dataDict: DataDict(data: [
"__typename": AnimalKingdomAPI.Objects.Human.typename,
"firstName": firstName,
"__fulfilled": Set([
self.init(_dataDict: DataDict(
data: [
"__typename": AnimalKingdomAPI.Objects.Human.typename,
"firstName": firstName,
],
fulfilledFragments: [
ObjectIdentifier(Self.self)
])
]))
]
))
}
}
}
Loading