Updated to readonly public props on as many models as possible

This commit is contained in:
Alejandro Celaya
2022-04-23 14:00:47 +02:00
parent e79391907a
commit bca3e62ced
74 changed files with 249 additions and 494 deletions

View File

@@ -26,8 +26,8 @@ class DomainVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdapte
return $this->visitRepository->countVisitsByDomain(
$this->domain,
new VisitsCountFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
),
);
@@ -38,8 +38,8 @@ class DomainVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdapte
return $this->visitRepository->findVisitsByDomain(
$this->domain,
new VisitsListFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
$length,
$offset,

View File

@@ -23,8 +23,8 @@ class NonOrphanVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAda
protected function doCount(): int
{
return $this->repo->countNonOrphanVisits(new VisitsCountFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
));
}
@@ -32,8 +32,8 @@ class NonOrphanVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAda
public function getSlice(int $offset, int $length): iterable
{
return $this->repo->findNonOrphanVisits(new VisitsListFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
$length,
$offset,

View File

@@ -19,16 +19,16 @@ class OrphanVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdapte
protected function doCount(): int
{
return $this->repo->countOrphanVisits(new VisitsCountFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
));
}
public function getSlice(int $offset, int $length): iterable
{
return $this->repo->findOrphanVisits(new VisitsListFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
null,
$length,
$offset,

View File

@@ -27,8 +27,8 @@ class ShortUrlVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdap
return $this->visitRepository->findVisitsByShortCode(
$this->identifier,
new VisitsListFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
$length,
$offset,
@@ -41,8 +41,8 @@ class ShortUrlVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdap
return $this->visitRepository->countVisitsByShortCode(
$this->identifier,
new VisitsCountFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
),
);

View File

@@ -26,8 +26,8 @@ class TagVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdapter
return $this->visitRepository->findVisitsByTag(
$this->tag,
new VisitsListFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
$length,
$offset,
@@ -40,8 +40,8 @@ class TagVisitsPaginatorAdapter extends AbstractCacheableCountPaginatorAdapter
return $this->visitRepository->countVisitsByTag(
$this->tag,
new VisitsCountFiltering(
$this->params->getDateRange(),
$this->params->excludeBots(),
$this->params->dateRange,
$this->params->excludeBots,
$this->apiKey,
),
);

View File

@@ -10,9 +10,9 @@ use Shlinkio\Shlink\Rest\Entity\ApiKey;
class VisitsCountFiltering
{
public function __construct(
private ?DateRange $dateRange = null,
private bool $excludeBots = false,
private ?ApiKey $apiKey = null,
public readonly ?DateRange $dateRange = null,
public readonly bool $excludeBots = false,
public readonly ?ApiKey $apiKey = null,
) {
}
@@ -20,19 +20,4 @@ class VisitsCountFiltering
{
return new self(null, false, $apiKey);
}
public function dateRange(): ?DateRange
{
return $this->dateRange;
}
public function excludeBots(): bool
{
return $this->excludeBots;
}
public function apiKey(): ?ApiKey
{
return $this->apiKey;
}
}

View File

@@ -13,19 +13,9 @@ final class VisitsListFiltering extends VisitsCountFiltering
?DateRange $dateRange = null,
bool $excludeBots = false,
?ApiKey $apiKey = null,
private ?int $limit = null,
private ?int $offset = null,
public readonly ?int $limit = null,
public readonly ?int $offset = null,
) {
parent::__construct($dateRange, $excludeBots, $apiKey);
}
public function limit(): ?int
{
return $this->limit;
}
public function offset(): ?int
{
return $this->offset;
}
}

View File

@@ -22,14 +22,14 @@ class CountOfNonOrphanVisits extends BaseSpecification
{
$conditions = [
Spec::isNotNull('shortUrl'),
new InDateRange($this->filtering->dateRange()),
new InDateRange($this->filtering->dateRange),
];
if ($this->filtering->excludeBots()) {
if ($this->filtering->excludeBots) {
$conditions[] = Spec::eq('potentialBot', false);
}
$apiKey = $this->filtering->apiKey();
$apiKey = $this->filtering->apiKey;
if ($apiKey !== null) {
$conditions[] = new WithApiKeySpecsEnsuringJoin($apiKey, 'shortUrl');
}

View File

@@ -21,10 +21,10 @@ class CountOfOrphanVisits extends BaseSpecification
{
$conditions = [
Spec::isNull('shortUrl'),
new InDateRange($this->filtering->dateRange()),
new InDateRange($this->filtering->dateRange),
];
if ($this->filtering->excludeBots()) {
if ($this->filtering->excludeBots) {
$conditions[] = Spec::eq('potentialBot', false);
}

View File

@@ -129,8 +129,8 @@ class VisitsStatsHelper implements VisitsStatsHelperInterface
private function createPaginator(AdapterInterface $adapter, VisitsParams $params): Paginator
{
$paginator = new Paginator($adapter);
$paginator->setMaxPerPage($params->getItemsPerPage())
->setCurrentPage($params->getPage());
$paginator->setMaxPerPage($params->itemsPerPage)
->setCurrentPage($params->page);
return $paginator;
}

View File

@@ -72,6 +72,6 @@ class VisitsTracker implements VisitsTrackerInterface
$this->em->persist($visit);
$this->em->flush();
$this->eventDispatcher->dispatch(new UrlVisited($visit->getId(), $visitor->getRemoteAddress()));
$this->eventDispatcher->dispatch(new UrlVisited($visit->getId(), $visitor->remoteAddress));
}
}