<?php
/*
* Author: Dominik Piekarski <code@dompie.de>
* Created at: 2021/02/25 12:03
*/
declare(strict_types=1);
namespace App\Subscriber\Search;
use App\Event\Content\ContentStatusChangedEvent;
use App\Service\Search\VideoSearchService;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class VideoSearchSubscriber implements EventSubscriberInterface
{
protected VideoSearchService $search;
protected LoggerInterface $logger;
public function __construct(VideoSearchService $search, LoggerInterface $logger)
{
$this->search = $search;
$this->logger = $logger;
}
public static function getSubscribedEvents(): array
{
return [
ContentStatusChangedEvent::class => [['onContentDeleteRemoveItem', 0]],
];
}
public function onContentDeleteRemoveItem(ContentStatusChangedEvent $event): void
{
$content = $event->getContent();
if (!$this->search->supportsEntity($content)) {
return;
}
try {
$this->search->updateOrInsert($content, true);
} catch (\Throwable $e) {
$this->logger->critical($e->getMessage().PHP_EOL.$e->getTraceAsString());
}
}
}