67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace KupShop\CatalogBundle\StatusProvider;
|
|
|
|
use KupShop\CatalogBundle\Search\FulltextElastic;
|
|
use KupShop\KupShopBundle\Metrics\AbstractStatusProvider;
|
|
use KupShop\KupShopBundle\Metrics\StatusSample;
|
|
|
|
class FullTextSearchStatusProvider extends AbstractStatusProvider
|
|
{
|
|
protected FulltextElastic $fulltextElastic;
|
|
|
|
public const config = [
|
|
FulltextElastic::INDEX_PRODUCTS => [
|
|
'count' => 1,
|
|
],
|
|
FulltextElastic::INDEX_SECTIONS => [
|
|
'count' => 1,
|
|
],
|
|
FulltextElastic::INDEX_ARTICLES => [
|
|
'count' => 1,
|
|
],
|
|
FulltextElastic::INDEX_PRODUCERS => [
|
|
'count' => 1,
|
|
],
|
|
FulltextElastic::INDEX_PAGES => [
|
|
'count' => 1,
|
|
],
|
|
];
|
|
|
|
public function getData(): StatusSample|iterable
|
|
{
|
|
yield $this->search(FulltextElastic::INDEX_PRODUCTS);
|
|
|
|
yield $this->search(FulltextElastic::INDEX_SECTIONS);
|
|
|
|
yield $this->search(FulltextElastic::INDEX_PAGES);
|
|
|
|
if (findModule(\Modules::ARTICLES)) {
|
|
yield $this->search(FulltextElastic::INDEX_ARTICLES);
|
|
}
|
|
|
|
if (findModule(\Modules::PRODUCERS)) {
|
|
yield $this->search(FulltextElastic::INDEX_PRODUCERS);
|
|
}
|
|
|
|
if (findModule(\Modules::PRODUCTS_SECTIONS, \Modules::SUB_ELASTICSEARCH)) {
|
|
yield new StatusSample('elastic_available', FulltextElastic::isServerAvailable());
|
|
}
|
|
}
|
|
|
|
protected function search($index): StatusSample
|
|
{
|
|
$result = $this->fulltextElastic->search('a', self::config, [$index]);
|
|
|
|
return new StatusSample('fulltext', (int) (count($result) > 0), ['index'], [$index]);
|
|
}
|
|
|
|
/** @required */
|
|
public function setFulltextElastic(FulltextElastic $fulltextElastic)
|
|
{
|
|
$this->fulltextElastic = $fulltextElastic;
|
|
}
|
|
}
|