Add memoization for build referencable schemas #30
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.
TLDR
Memoization for referencable schemas to limit required instance builds.
Important
Related to discussion #29.
User benefit
Although the majority of declared schema properties are trivial:
sometimes more resource demanding actions are being taken, e.g. model-querying to get example values:
Note
Another examples are:
Collection
s for...->enum(...)
sNow, assuming we have a bit more popular
Schema
that is loaded in multiple otherSchema
s, e.g. aUserSchema
, that is being also referenced with the same objectId (UserSchema::ref('user')
):Implementation Overview
To make sure we're not re-building schema components of the same class and with the same object ID - we make use of the Memoization Technique.
Test Overview
We test if objects of the same class and object ID are truly equal. Additionally - we make sure that the object ID matters in the second assertion.