deepseek-1.x-dev/module/ai_auto_embedding/src/EventSubscriber/EntityUpdateSubscriber.php
module/ai_auto_embedding/src/EventSubscriber/EntityUpdateSubscriber.php
<?php
namespace Drupal\ai_auto_embedding\EventSubscriber;
use Drupal\ai_auto_embedding\Event\EntityUpdateEvent;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Queue\QueueFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* {@inheritdoc}
*/
class EntityUpdateSubscriber implements EventSubscriberInterface {
/**
* {@inheritdoc}
*/
public function __construct(
protected ConfigFactoryInterface $configFactory,
protected QueueFactory $queueFactory,
) {
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new self(
$container->get('config.factory'),
$container->get('queue'),
);
}
/**
* Handles the event when an entity is updated.
*
* @param \Drupal\ai_auto_embedding\Event\EntityUpdateEvent $event
* Config crud event.
*/
public function entityUpdate(EntityUpdateEvent $event) {
$configAI = $this->configFactory->get('deepseek.settings');
$config = $this->configFactory->get('ai_auto_embedding.settings')->getRawData();
if (!empty($config) && !empty($configAI->get('embedding'))) {
$entity = $event->entity;
$entity_type = $entity->getEntityTypeId();
$entity_bundle = $entity->bundle();
$key_index = "entity-$entity_bundle-$entity_type";
if (!empty($config[$key_index])) {
$view_mode = $config["view_mode-$entity_bundle-$entity_type"] ?? NULL;
if ($view_mode) {
$queue = $this->queueFactory->get('queue_embedding_entity');
$queue->createItem([
'id' => $entity->id(),
'entity_type' => $entity_type,
'bundle' => $entity_bundle,
'view_mode' => $view_mode,
]);
}
}
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
return [
EntityUpdateEvent::EVENT_NAME => 'entityUpdate',
];
}
}
