feat(preloader): add preloadOnce to preload a relationship only once #1078
+63
β0
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.
π Linked issue
Similar to PR #1052 by @RomainLanz
β Type of change
π Description
Added a preloadOnce method to the query building using the same logic as the loadOnce
In our use case we allow the client to preload field using a query parameter
$populate: string[]
While doing so we sometimes also use preload in our services
If the client request
find
with the following payloadWithout
.preloadOnce
query.preload("tenant", (subquery) => { subquery.preload('settings') })
query.preload("tenant")
and override the callbackfind
will return the data with thetenant
populated but without thetenant > settings
With
.preloadOnce
query.preload("tenant", (subquery) => { subquery.preload('settings') })
query.preloadOnce("tenant")
and nothing will happen as tenant is already queued for preloadingfind
will return the data with thetenant
populated and alsotenant > settings
populatedπ Checklist