From e0927c51117449c4ef8fb07d7044041225bd7968 Mon Sep 17 00:00:00 2001 From: Claudiu Cristea <7931-claudiucristea@users.noreply.drupalcode.org> Date: Wed, 13 Mar 2024 11:01:02 +0000 Subject: [PATCH] Issue #3427554 by claudiu.cristea: Postpone URI deletion in destruction phase --- rdf_sync.module | 4 ---- rdf_sync.services.yml | 1 + src/RdfSyncSynchronizer.php | 9 +++++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rdf_sync.module b/rdf_sync.module index 8539a34..034b5c3 100644 --- a/rdf_sync.module +++ b/rdf_sync.module @@ -152,9 +152,5 @@ function rdf_sync_entity_delete(EntityInterface $entity): void { $mapper = \Drupal::getContainer()->get('rdf_sync.mapper'); if ($entity instanceof ContentEntityInterface && $mapper->isMappedEntity($entity)) { \Drupal::getContainer()->get('rdf_sync.synchronizer')->synchronize(SyncMethod::DELETE, [$entity]); - \Drupal::database()->delete('rdf_sync_uri') - ->condition('entity_type', $entity->getEntityTypeId()) - ->condition('entity_id', $entity->id()) - ->execute(); } } diff --git a/rdf_sync.services.yml b/rdf_sync.services.yml index 2fc15b8..c663f71 100644 --- a/rdf_sync.services.yml +++ b/rdf_sync.services.yml @@ -45,6 +45,7 @@ services: - '@queue' - '@rdf_sync.mapper' - '@rdf_sync.normalizer' + - '@database' tags: - { name: needs_destruction } rdf_sync.normalizer.subscriber: diff --git a/src/RdfSyncSynchronizer.php b/src/RdfSyncSynchronizer.php index 13e30b9..847be5b 100644 --- a/src/RdfSyncSynchronizer.php +++ b/src/RdfSyncSynchronizer.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Drupal\rdf_sync; +use Drupal\Core\Database\Connection; use Drupal\Core\DestructableInterface; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Queue\QueueFactory; @@ -35,6 +36,8 @@ class RdfSyncSynchronizer implements DestructableInterface { * The RDF Sync mapper service. * @param \Symfony\Component\Serializer\Normalizer\NormalizerInterface $normalizer * The RDF Sync normalizer. + * @param \Drupal\Core\Database\Connection $database + * The database connection. */ public function __construct( protected StateInterface $state, @@ -42,6 +45,7 @@ class RdfSyncSynchronizer implements DestructableInterface { protected QueueFactory $queueFactory, protected RdfSyncMapper $mapper, protected NormalizerInterface $normalizer, + protected Connection $database, ) {} /** @@ -121,6 +125,11 @@ class RdfSyncSynchronizer implements DestructableInterface { $entities, ); RdfSyncConnection::deleteTriples($uris); + + // Update {rdf_sync_uri} table. + if ($method === SyncMethod::DELETE) { + $this->database->delete('rdf_sync_uri')->condition('uri', $uris, 'IN')->execute(); + } } if (in_array($method, [SyncMethod::INSERT, SyncMethod::UPDATE], TRUE)) { -- GitLab