Skip to content
Criteria.php 1.23 KiB
Newer Older
Nikita Chernykh's avatar
Nikita Chernykh committed
<?php

Nikita Chernykh's avatar
Nikita Chernykh committed
namespace IQDEV\ElasticSearch\Criteria;
Nikita Chernykh's avatar
Nikita Chernykh committed

Nikita Chernykh's avatar
Nikita Chernykh committed
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterCollection;
use IQDEV\ElasticSearch\Criteria\Order\OrderCollection;
use IQDEV\ElasticSearch\Criteria\Search\SearchCollection;
Nikita Chernykh's avatar
Nikita Chernykh committed

final class Criteria
{
    private SearchCollection $search;
Nikita Chernykh's avatar
Nikita Chernykh committed
    private FilterCollection $filters;
    private OrderCollection $sorting;
    private Pagination $pagination;

    public function __construct()
    {
        $this->search = new SearchCollection();
Nikita Chernykh's avatar
Nikita Chernykh committed
        $this->filters = new FilterCollection();
        $this->sorting = new OrderCollection();
        $this->pagination = new Pagination();
    }

    public function getSearch(): SearchCollection
    {
        return $this->search;
    }

    public function getFilters(): FilterCollection
Nikita Chernykh's avatar
Nikita Chernykh committed
    {
        return $this->filters;
    }

    public function getSorting(): OrderCollection
Nikita Chernykh's avatar
Nikita Chernykh committed
    {
        return $this->sorting;
    }

    public function getPagination(): Pagination
Nikita Chernykh's avatar
Nikita Chernykh committed
    {
        return $this->pagination;
    }
Nikita Chernykh's avatar
Nikita Chernykh committed

    public function __clone(): void
    {
        $this->search = clone $this->search;
        $this->filters = clone $this->filters;
        $this->sorting = clone $this->sorting;
        $this->pagination = clone $this->pagination;
    }
Nikita Chernykh's avatar
Nikita Chernykh committed
}