Add a bit more typing to help future development and customizations.

This commit is contained in:
Pol Dellaiera 2021-06-29 13:53:15 +02:00
parent 979ea5841d
commit c37b98cecd
2 changed files with 16 additions and 18 deletions

View File

@ -10,6 +10,7 @@ use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Pagination\PaginatorInterface;
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
use Chill\MainBundle\CRUD\Resolver\Resolver;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Translation\TranslatorInterface;
@ -69,7 +70,7 @@ class AbstractCRUDController extends AbstractController
* @param Request $request
* @return int
*/
protected function countEntities(string $action, Request $request, $_format): int
protected function countEntities(string $action, Request $request, string $_format): int
{
return $this->buildQueryEntities($action, $request)
->select('COUNT(e)')
@ -89,23 +90,23 @@ class AbstractCRUDController extends AbstractController
* It returns, by default, a query builder.
*
*/
protected function queryEntities(string $action, Request $request, string $_format, PaginatorInterface $paginator)
protected function queryEntities(string $action, Request $request, string $_format, PaginatorInterface $paginator): QueryBuilder
{
$query = $this->buildQueryEntities($action, $request)
$queryBuilder = $this->buildQueryEntities($action, $request)
->setFirstResult($paginator->getCurrentPage()->getFirstItemNumber())
->setMaxResults($paginator->getItemsPerPage());
// allow to order queries and return the new query
return $this->orderQuery($action, $query, $request, $paginator, $_format);
return $this->orderQuery($action, $queryBuilder, $request, $paginator, $_format);
}
/**
* Add ordering fields in the query build by self::queryEntities
*
*/
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator, $_format)
protected function orderQuery(string $action, QueryBuilder $queryBuilder, Request $request, PaginatorInterface $paginator, string $_format): QueryBuilder
{
return $query;
return $queryBuilder;
}
/**
@ -117,12 +118,8 @@ class AbstractCRUDController extends AbstractController
* can add some by using the method `customizeQuery`.
*
* The alias for the entity is "e".
*
* @param string $action
* @param Request $request
* @return QueryBuilder
*/
protected function buildQueryEntities(string $action, Request $request)
protected function buildQueryEntities(string $action, Request $request): QueryBuilder
{
$qb = $this->getDoctrine()->getManager()
->createQueryBuilder()
@ -135,14 +132,14 @@ class AbstractCRUDController extends AbstractController
return $qb;
}
protected function customizeQuery(string $action, Request $request, $query): void {}
protected function customizeQuery(string $action, Request $request, QueryBuilder $queryBuilder): void {}
/**
* Get the result of the query
*/
protected function getQueryResult(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $query)
protected function getQueryResult(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, QueryBuilder $queryBuilder): array
{
return $query->getQuery()->getResult();
return $queryBuilder->getQuery()->getResult();
}
protected function onPreIndex(string $action, Request $request, string $_format): ?Response
@ -161,7 +158,7 @@ class AbstractCRUDController extends AbstractController
/**
* method used by indexAction
*/
protected function onPostIndexBuildQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $query): ?Response
protected function onPostIndexBuildQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, QueryBuilder $queryBuilder): ?Response
{
return null;
}
@ -169,7 +166,7 @@ class AbstractCRUDController extends AbstractController
/**
* method used by indexAction
*/
protected function onPostIndexFetchQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $entities): ?Response
protected function onPostIndexFetchQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, array $entities): ?Response
{
return null;
}
@ -188,7 +185,7 @@ class AbstractCRUDController extends AbstractController
/**
* called on post fetch entity
*/
protected function onPostFetchEntity(string $action, Request $request, $entity, $_format): ?Response
protected function onPostFetchEntity(string $action, Request $request, $entity, string $_format): ?Response
{
return null;
}

View File

@ -305,7 +305,8 @@ class ApiController extends AbstractCRUDController
if ($response instanceof Response) {
return $response;
}
// TODO: $entity is never set before
if (!isset($entity)) {
$entity = '';
}