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.
I'm introducing a new pattern called
optimistic effects
.Optimistic Effect is a way to declare that query result cache should be updated when some mutations are performed and native apollo cache is failing to update them.
Problem
The typical use case is the following:
Let's imagine a query:
GetPeopleQuery({ where: { name { like { '%toto%'} }})
Apollo does not know whenever it needs to add or remove rows from the query cache whenever
Proposed Solution
When performing a query, you can registerOptimisticEffect() in the query and attach it to a typename. This optimistic effect can precisely describe what to do when an entity is added or modified (kind of mimicking the backend behavior). Usually, you want to read the existing query cache, and update it.
Ex: OptimisticEffect Declaration:
Register:
Once registered, an optimistic effect is kept in memory.
Then, while performing a mutation, you can call triggerOptimisticEffects(typename) and all registered effect tied to this typename will be triggered
Example:
triggerOptimisticEffects('Company', [data?.createOneCompany]);