Skip to content
Snippets Groups Projects
Criteria.php 1.53 KiB
Newer Older
Nikita Chernykh's avatar
Nikita Chernykh committed
<?php

Nikita Chernykh's avatar
Nikita Chernykh committed
namespace IQDEV\ElasticSearch\Criteria;
use IQDEV\ElasticSearch\Criteria\Aggs\AggsCollection;
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;

    private AggsCollection $aggregations;

Nikita Chernykh's avatar
Nikita Chernykh committed
    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();
        $this->aggregations = new AggsCollection();
    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 getAggs(): AggsCollection
    {
        return $this->aggregations;
    }

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;
        $this->aggregations = clone $this->aggregations;
Nikita Chernykh's avatar
Nikita Chernykh committed
    }
Nikita Chernykh's avatar
Nikita Chernykh committed
}