<?php
namespace App\EventSubscriber;
use App\Entity\JobQueue;
use App\Service\EsJobQueue;
use App\Event\CommonCategoryPreRemoveEvent;
use App\Event\CommonCategoryPostUpdateEvent;
use App\Service\JobQueueAction\ElasticDependentUpdateAction;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CommonCategorySubscriber implements EventSubscriberInterface
{
public function __construct(
private EsJobQueue $esJobQueue
) {}
public static function getSubscribedEvents(): array
{
return [
CommonCategoryPostUpdateEvent::NAME => 'onPostUpdate',
CommonCategoryPreRemoveEvent::NAME => 'onPreRemove'
];
}
public function onPostUpdate(CommonCategoryPostUpdateEvent $event)
{
$object = $event->getObject();
$payload = [...$object->getQueueInfo(), 'operation' => 'UPDATE'];
$this->esJobQueue->create(
ElasticDependentUpdateAction::NAME,
json_encode($payload),
JobQueue::PRIORITY_LOW,
null,
1,
null,
false,
false
);
}
public function onPreRemove(CommonCategoryPreRemoveEvent $event)
{
$object = $event->getObject();
$payload = [...$object->getQueueInfo(), 'operation' => 'DELETE'];
$this->esJobQueue->create(
ElasticDependentUpdateAction::NAME,
json_encode($payload),
JobQueue::PRIORITY_LOW
);
}
}