Skip to content

Commit 2aa22af

Browse files
committed
Remove row from collection only when its reference count drops to 0
1 parent 0c6d25e commit 2aa22af

File tree

1 file changed

+6
-2
lines changed
  • packages/query-db-collection/src

1 file changed

+6
-2
lines changed

packages/query-db-collection/src/query.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,8 @@ export function queryCollectionOptions(
462462
const queryToRowsSet = queryToRows.get(hashedQuerKey) || new Set()
463463
queryToRowsSet.delete(rowKey)
464464
queryToRows.set(hashedQuerKey, queryToRowsSet)
465+
466+
return rowToQueriesSet.size === 0
465467
}
466468

467469
const internalSync: SyncConfig<any>[`sync`] = (params) => {
@@ -573,8 +575,10 @@ export function queryCollectionOptions(
573575
currentSyncedItems.forEach((oldItem, key) => {
574576
const newItem = newItemsMap.get(key)
575577
if (!newItem) {
576-
write({ type: `delete`, value: oldItem })
577-
removeRow(key, hashedQueryKey)
578+
const needToRemove = removeRow(key, hashedQueryKey) // returns true if the row is no longer referenced by any queries
579+
if (needToRemove) {
580+
write({ type: `delete`, value: oldItem })
581+
}
578582
} else if (
579583
!shallowEqual(
580584
oldItem as Record<string, any>,

0 commit comments

Comments
 (0)