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.
Problem
The current
ModelObserver
implementation callsunsearchable
every time a model gets deleted. Practically, it means that the underlying engine (in our case, at StuDocu, Algolia) would be asked to delete the model from its index regardless of it actually being in the index or not.Solution
Two methods named
wasSearchableBeforeUpdate
andwasSearchableBeforeDelete
are implemented to respectively check if a model was searchable before being updated or deleted.ModelObserver
gets smarter and first checks if a model was actually searchable before callingunsearchable
, thanks to one or the other method.Now, the flow is as follow:
wasSearchableBeforeUpdate
. If it was, it is made unsearchable. If it wasn't, there is no need to make it unsearchable.wasSearchableBeforeDelete
. If it was, it is made unsearchable. If it wasn't, there is no need to make it unsearchable.Additional fix
The
ModelObserverTest
unit tests were not asserting anything and were actually broken after callingdisableSyncingFor
intest_saved_handler_doesnt_make_model_searchable_when_disabled
. They're now fixed and extended to cover the use cases described above.