1 | <?php |
||
23 | class CriteriaQueryBuilder implements CriteriaQueryBuilderInterface |
||
24 | { |
||
25 | /** @var Criteria */ |
||
26 | protected $criteria; |
||
27 | |||
28 | /** @var \Doctrine\ORM\QueryBuilder */ |
||
29 | protected $qb; |
||
30 | |||
31 | /** @var array */ |
||
32 | private $filterParams; |
||
33 | |||
34 | /** @var array */ |
||
35 | private $sortingFields; |
||
36 | |||
37 | /** @var array */ |
||
38 | private $defaultOrder; |
||
39 | |||
40 | /** @var ServiceRegistry|HandlerInterface[]|AbstractHandler[] */ |
||
41 | private $handlers; |
||
42 | |||
43 | /** @var bool */ |
||
44 | private $applied = false; |
||
45 | |||
46 | public const DEFAULT_ORDER_FIELD = 'created'; |
||
47 | |||
48 | private $supportedSortingFields = []; |
||
49 | |||
50 | /** |
||
51 | * @param EntityRepository $repository |
||
52 | * @param array $filterParams |
||
53 | 4 | * @param array $sortingFields |
|
54 | * |
||
55 | 4 | * @internal param ApiManagerInterface $manager |
|
56 | 4 | */ |
|
57 | 4 | public function __construct(EntityRepository $repository, array $filterParams = [], array $sortingFields = []) |
|
67 | 4 | ||
68 | 4 | protected function initDefaultHandlers(): void |
|
73 | |||
74 | /** |
||
75 | 4 | * @param FilterInterface $filter |
|
76 | * |
||
77 | 4 | * @return CriteriaQueryBuilderInterface |
|
78 | */ |
||
79 | public function addFilter(FilterInterface $filter): CriteriaQueryBuilderInterface |
||
99 | 4 | ||
100 | protected function resetApply():void |
||
104 | |||
105 | /** |
||
106 | * @param SortInterface $sort |
||
107 | * |
||
108 | * @return CriteriaQueryBuilderInterface |
||
109 | */ |
||
110 | public function addSorting(SortInterface $sort): CriteriaQueryBuilderInterface |
||
131 | 3 | ||
132 | /** |
||
133 | 3 | * @return \Doctrine\ORM\QueryBuilder |
|
134 | 3 | * @throws \Doctrine\ORM\Query\QueryException |
|
135 | */ |
||
136 | 3 | public function getQb(): \Doctrine\ORM\QueryBuilder |
|
143 | |||
144 | 4 | /** |
|
145 | 3 | * It caused changes in qb and criteria |
|
146 | */ |
||
147 | protected function apply(): void |
||
167 | |||
168 | 4 | /** |
|
169 | * @return Criteria |
||
170 | 4 | */ |
|
171 | 3 | public function getCriteria(): Criteria |
|
177 | 4 | ||
178 | private function applyFilters() |
||
188 | 4 | ||
189 | private function applySorting() |
||
199 | |||
200 | /** |
||
201 | 4 | * @return array |
|
202 | */ |
||
203 | 4 | public function getDefaultOrder(): array |
|
212 | |||
213 | 4 | /** |
|
214 | 4 | * @param array $defaultOrder |
|
215 | */ |
||
216 | public function setDefaultOrder(array $defaultOrder): void |
||
220 | |||
221 | 4 | /** |
|
222 | * @param array $filterParams |
||
223 | 4 | */ |
|
224 | 4 | public function setFilterParams(array $filterParams) |
|
230 | |||
231 | /** |
||
232 | * @param array $sortingFields |
||
233 | */ |
||
234 | public function setSortingFields(array $sortingFields) |
||
240 | |||
241 | /** |
||
242 | * @return ServiceRegistry |
||
243 | */ |
||
244 | public function getHandlers():ServiceRegistry |
||
248 | |||
249 | /** |
||
250 | * @param string $identifier |
||
251 | * @param HandlerInterface $handler |
||
252 | */ |
||
253 | public function addHandler(string $identifier, HandlerInterface $handler):void |
||
257 | |||
258 | public function getSupportedSortingFields() : array |
||
262 | |||
263 | private function orderByDefaultField() : array |
||
267 | } |
||
268 |