def delete(
self,
model: type[SyncableMixin],
deletes: dict[str, int],
) -> None:
identity_lookup = {f'{self._identity_field}__in': list(deletes.keys())}
instances = list(model.objects.filter(**identity_lookup))
pending = self._collect_pending(instances, deletes)
if not pending:
return
with sync_bypass():
for instance in pending:
key = str(getattr(instance, self._identity_field))
tombstone_ts = deletes[key]
staleness_filter = {
self._identity_field: key,
'sync_field_last_modified__lte': tombstone_ts,
}
model.objects.filter(**staleness_filter).update(
is_deleted=True,
sync_field_timestamps=instance.sync_field_timestamps,
sync_field_last_modified=instance.sync_field_last_modified,
)