Optimize .mark_as_read! and extend to work on relations #1
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.
by fatkodima
This PR optimizes .mark_as_read! to be roughly one query for collections and for relations.
Implements
Partly done by ledermann#93 - an optimized "one query" solution for scopes is still pending.
from ledermann#73 and fixes ledermann#80.
This is a an improvement over my previous PR ledermann#94, so probably that can be closed.
Implementation is based on INSERT ... ON CONFLICT DO ... like feature on modern databases (aka UPSERT) using gem upsert which uses native support of "upsert" or emulates if db does not provide it and allows to insert many records at once without db constraint violation.
PostgresSQL requires to have a unique constraint (just index is not sufficient) as so upsert gem, as stated on gem's readme so migration to add such was created.