Skip to content

Commit d6f81ce

Browse files
committed
Ref: PaginatedFilter base class
1 parent fa22d99 commit d6f81ce

10 files changed

Lines changed: 31 additions & 29 deletions

File tree

src/Domain/Common/Model/Filter/PaginatedFilterTrait.php renamed to src/Domain/Common/Model/Filter/PaginatedFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace PhpList\Core\Domain\Common\Model\Filter;
66

7-
trait PaginatedFilterTrait
7+
class PaginatedFilter implements FilterRequestInterface
88
{
99
private int $lastId = 0;
1010
private int $limit = 50;

src/Domain/Common/Model/PaginatedResult.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class PaginatedResult
1313
private array $items;
1414
private int $total;
1515
private int $limit;
16+
// maybe $lastId not needed
1617
private int $lastId;
1718

1819
/** @param list<T> $items */

src/Domain/Configuration/Model/Filter/EventLogFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66

77
use DateTimeInterface;
88
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
9-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
9+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
1010

11-
class EventLogFilter implements FilterRequestInterface
11+
class EventLogFilter extends PaginatedFilter implements FilterRequestInterface
1212
{
13-
use PaginatedFilterTrait;
14-
1513
public function __construct(
1614
private readonly ?string $page = null,
1715
private readonly ?DateTimeInterface $dateFrom = null,

src/Domain/Identity/Model/Filter/AdminAttributeValueFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@
55
namespace PhpList\Core\Domain\Identity\Model\Filter;
66

77
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
8-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
8+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
99

10-
class AdminAttributeValueFilter implements FilterRequestInterface
10+
class AdminAttributeValueFilter extends PaginatedFilter implements FilterRequestInterface
1111
{
12-
use PaginatedFilterTrait;
13-
1412
private ?int $adminId = null;
1513

1614
public function setAdminId(?int $adminId): self

src/Domain/Messaging/Model/Filter/MessageFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
namespace PhpList\Core\Domain\Messaging\Model\Filter;
66

77
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
8-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
8+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
99
use PhpList\Core\Domain\Identity\Model\Administrator;
1010

11-
class MessageFilter implements FilterRequestInterface
11+
class MessageFilter extends PaginatedFilter implements FilterRequestInterface
1212
{
13-
use PaginatedFilterTrait;
14-
1513
private ?Administrator $owner = null;
1614

1715
public function getOwner(): ?Administrator

src/Domain/Messaging/Model/Filter/SubscriberListFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
namespace PhpList\Core\Domain\Messaging\Model\Filter;
66

77
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
8-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
8+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
99
use PhpList\Core\Domain\Identity\Model\Administrator;
1010

11-
class SubscriberListFilter implements FilterRequestInterface
11+
class SubscriberListFilter extends PaginatedFilter implements FilterRequestInterface
1212
{
13-
use PaginatedFilterTrait;
14-
1513
private ?Administrator $owner = null;
1614

1715
public function getOwner(): ?Administrator

src/Domain/Subscription/Model/Filter/SubscriberAttributeValueFilter.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
namespace PhpList\Core\Domain\Subscription\Model\Filter;
66

77
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
8-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
8+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
99

10-
class SubscriberAttributeValueFilter implements FilterRequestInterface
10+
class SubscriberAttributeValueFilter extends PaginatedFilter implements FilterRequestInterface
1111
{
12-
use PaginatedFilterTrait;
1312

1413
private ?int $subscriberId = null;
1514

src/Domain/Subscription/Model/Filter/SubscriberFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@
66

77
use DateTimeImmutable;
88
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
9-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
9+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
1010

1111
/** @SuppressWarnings("ExcessiveParameterList") */
12-
class SubscriberFilter implements FilterRequestInterface
12+
class SubscriberFilter extends PaginatedFilter implements FilterRequestInterface
1313
{
14-
use PaginatedFilterTrait;
15-
1614
private ?int $listId;
1715
private ?DateTimeImmutable $subscribedDateFrom;
1816
private ?DateTimeImmutable $subscribedDateTo;

src/Domain/Subscription/Model/Filter/SubscriberHistoryFilter.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@
66

77
use DateTimeImmutable;
88
use PhpList\Core\Domain\Common\Model\Filter\FilterRequestInterface;
9-
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilterTrait;
9+
use PhpList\Core\Domain\Common\Model\Filter\PaginatedFilter;
1010
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1111

12-
class SubscriberHistoryFilter implements FilterRequestInterface
12+
class SubscriberHistoryFilter extends PaginatedFilter implements FilterRequestInterface
1313
{
14-
use PaginatedFilterTrait;
15-
1614
private ?Subscriber $subscriber;
1715
private ?string $ip;
1816
private ?DateTimeImmutable $dateFrom;

src/Domain/Subscription/Repository/SubscriberListRepository.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,14 @@ public function getFilteredAfterId(FilterRequestInterface $filter): PaginatedRes
6767

6868
$queryBuilder = $this->createQueryBuilder('l');
6969

70-
return $queryBuilder
70+
$countQb = clone $queryBuilder;
71+
$total = (int) $countQb
72+
->select('COUNT(DISTINCT l.id)')
73+
->getQuery()
74+
->getSingleScalarResult();
75+
76+
/** @var list<SubscriberList> $items */
77+
$items = $queryBuilder
7178
->where($queryBuilder->expr()->orX('l.owner = :admin', 'l.public = true'))
7279
->setParameter('admin', $filter->getOwner())
7380
->andWhere('l.id > :id')
@@ -76,6 +83,13 @@ public function getFilteredAfterId(FilterRequestInterface $filter): PaginatedRes
7683
->orderBy('l.id', 'ASC')
7784
->getQuery()
7885
->getResult();
86+
87+
return new PaginatedResult(
88+
items: $items,
89+
total: $total,
90+
limit: $filter->getLimit(),
91+
lastId: $filter->getLastId(),
92+
);
7993
}
8094

8195
public function getListNames(array $listIds): array

0 commit comments

Comments
 (0)