refactored repositories and DB queries (#5026)

* removed unused teams from export order
* added new paginator for query instead of querybuilder
* added field hydrate enums
* hide PARTIAL deprecation
* never log deprecations in production
* replaced InvoiceLoader with native Doctrine feature
* prevent excessive permission queries
* support loading customers of team
* improved findByIds
* internalized API
* fix null string deprecations
This commit is contained in:
Kevin Papst
2024-08-27 10:11:19 +02:00
committed by GitHub
parent 9e3d243b4b
commit 9d933f62c0
81 changed files with 1648 additions and 1436 deletions

View File

@@ -14,11 +14,33 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
use VisibilityTrait;
public const CUSTOMER_ORDER_ALLOWED = [
'name', 'description' => 'comment', 'country', 'number', 'homepage', 'email', 'mobile', 'fax',
'phone', 'currency', 'address', 'contact', 'company', 'vat_id', 'budget', 'timeBudget', 'visible'
'name',
'description' => 'comment',
'country', 'number',
'homepage',
'email',
'mobile',
'fax',
'phone',
'currency',
'address',
'contact',
'company',
'vat_id',
'budget',
'timeBudget',
'visible'
];
private ?string $country = null;
/**
* @var array<int>
*/
private array $customerIds = [];
/**
* @var array<CustomerQueryHydrate>
*/
private array $hydrate = [];
public function __construct()
{
@@ -26,9 +48,23 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
'orderBy' => 'name',
'visibility' => VisibilityInterface::SHOW_VISIBLE,
'country' => null,
'customerIds' => [],
]);
}
protected function copyFrom(BaseQuery $query): void
{
parent::copyFrom($query);
if ($query instanceof CustomerQuery) {
$this->setCustomerIds($query->getCustomerIds());
$this->setCountry($query->getCountry());
foreach ($query->getHydrate() as $hydrate) {
$this->addHydrate($hydrate);
}
}
}
public function getCountry(): ?string
{
return $this->country;
@@ -38,4 +74,40 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
{
$this->country = $country;
}
/**
* @param array<int> $ids
*/
public function setCustomerIds(array $ids): void
{
$this->customerIds = $ids;
}
/**
* @return int[]
*/
public function getCustomerIds(): array
{
return $this->customerIds;
}
private function addHydrate(CustomerQueryHydrate $hydrate): void
{
if (!\in_array($hydrate, $this->hydrate, true)) {
$this->hydrate[] = $hydrate;
}
}
/**
* @return CustomerQueryHydrate[]
*/
public function getHydrate(): array
{
return $this->hydrate;
}
public function loadTeams(): void
{
$this->addHydrate(CustomerQueryHydrate::TEAMS);
}
}