search_api_meilisearch-1.0.x-dev/src/Parser/BooleanValueParser.php
src/Parser/BooleanValueParser.php
<?php
namespace Drupal\search_api_meilisearch\Parser;
use Drupal\search_api\IndexInterface;
use Drupal\search_api\Query\ConditionInterface;
/**
* Parses search api conditions with boolean value.
*/
class BooleanValueParser implements ConditionParserInterface {
protected const TYPE_BOOLEAN = 'boolean';
/**
* The scalar value parser.
*
* @var \Drupal\search_api_meilisearch\Parser\ScalarValueParser
*/
protected ScalarValueParser $scalarValueParser;
public function __construct(ScalarValueParser $scalarValueParser) {
$this->scalarValueParser = $scalarValueParser;
}
/**
* {@inheritdoc}
*/
public function parse(ConditionInterface $condition, IndexInterface $index): string {
$condition = clone $condition;
$condition->setValue($condition->getValue() ? 'true' : 'false');
return $this->scalarValueParser->parse($condition, $index);
}
/**
* {@inheritdoc}
*/
public function supports(ConditionInterface $condition, IndexInterface $index): bool {
if (!$this->scalarValueParser->supports($condition, $index)) {
return FALSE;
}
$field = $index->getField($condition->getField());
return $field && $field->getType() === self::TYPE_BOOLEAN;
}
}
