feat(datastore): Add Lazy reference types to Amplify core #2944
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Changes from v2
@available(iOS 13.0.0, *)forasyncfunctionsThis PR introduces the LazyReference type. The post reference in the Comment type is replaced with an instance of LazyReference.
Before:
After:
The computed property
postis backed by the internal_postof typeLazyReference. The computed property allows the developer to make an async call to lazy load the post. With the computed property and internal property, the developer call pattern becomes:When the association is required, the underlying API used is
_post.require(), if the association is optional, then_post.get()._post.require()will throw if the model cannot be loaded, while get() will return nil. The LazyReference type allows the data payloads to include all fields (eager loaded) or include only the primary keys of post (lazy loaded), used for decoding to the type into one of the two states.When a LazyReference instance is created during data decoding, a model provider is created using the registered plugin's model provider registry.
General Checklist
Given When Theninline code documentation and are named accordinglytestThing_condition_expectation()By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.