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 |
||
166 | |||
167 | /** |
||
168 | 4 | * @return Criteria |
|
169 | */ |
||
170 | 4 | public function getCriteria(): Criteria |
|
176 | |||
177 | 4 | private function applyFilters() |
|
187 | |||
188 | 4 | private function applySorting() |
|
198 | |||
199 | /** |
||
200 | * @return array |
||
201 | 4 | */ |
|
202 | public function getDefaultOrder(): array |
||
211 | 4 | ||
212 | /** |
||
213 | 4 | * @param array $defaultOrder |
|
214 | 4 | */ |
|
215 | public function setDefaultOrder(array $defaultOrder): void |
||
219 | 4 | ||
220 | /** |
||
221 | 4 | * @param array $filterParams |
|
222 | */ |
||
223 | 4 | public function setFilterParams(array $filterParams) |
|
229 | |||
230 | /** |
||
231 | * @param array $sortingFields |
||
232 | */ |
||
233 | public function setSortingFields(array $sortingFields) |
||
239 | |||
240 | /** |
||
241 | * @return ServiceRegistry |
||
242 | */ |
||
243 | public function getHandlers():ServiceRegistry |
||
247 | |||
248 | /** |
||
249 | * @param string $identifier |
||
250 | * @param HandlerInterface $handler |
||
251 | */ |
||
252 | public function addHandler(string $identifier, HandlerInterface $handler):void |
||
256 | |||
257 | public function getSupportedSortingFields() : array |
||
261 | |||
262 | private function orderByDefaultField() : array |
||
266 | } |
||
267 |