Skip to content
AbstractFilterQuery.php 971 B
Newer Older
<?php

declare(strict_types=1);

namespace IQDEV\ElasticSearch\Converter\Request\Filter;

use IQDEV\ElasticSearch\Esable;
Nikita Chernykh's avatar
Nikita Chernykh committed
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\LogicOperator;
use IQDEV\ElasticSearch\Search\BoolQuery\Query;
use IQDEV\ElasticSearch\Search\Nested;

abstract class AbstractFilterQuery
{
    protected Query $query;

    public function __construct() {
        $this->query = new Query();
    }

Nikita Chernykh's avatar
Nikita Chernykh committed
    protected function setFilterByLogic(Query $query, LogicOperator $logicOperator, Esable $filter): void
    {
        match ($logicOperator) {
Nikita Chernykh's avatar
Nikita Chernykh committed
            LogicOperator::AND => $query->getFilter()->add($filter),
            LogicOperator::OR => $query->getShould()->add($filter),
            LogicOperator::NOT => $query->getMustNot()->add($filter),
Nikita Chernykh's avatar
Nikita Chernykh committed
    abstract public function getQuery(FilterGroupCollection $filterGroupCollection, array $exclude): Query|Nested;