Refactor
This commit is contained in:
parent
cddb3af518
commit
f08fb4cd67
5 changed files with 50 additions and 14 deletions
|
@ -1,3 +1,6 @@
|
||||||
services:
|
services:
|
||||||
Drupal\opd_presentations\PresentationCounter:
|
Drupal\opd_presentations\PresentationCounter:
|
||||||
autowire: true
|
autowire: true
|
||||||
|
Drupal\opd_presentations\Repository\PresentationNodeRepository:
|
||||||
|
autowire: true
|
||||||
|
Drupal\opd_presentations\Repository\PresentationRepositoryInterface: '@Drupal\opd_presentations\Repository\PresentationNodeRepository'
|
||||||
|
|
|
@ -4,26 +4,15 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Drupal\opd_presentations;
|
namespace Drupal\opd_presentations;
|
||||||
|
|
||||||
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
use Drupal\opd_presentations\Repository\PresentationRepositoryInterface;
|
||||||
use Drupal\node\NodeInterface;
|
|
||||||
|
|
||||||
final class PresentationCounter {
|
final class PresentationCounter {
|
||||||
|
|
||||||
public function __construct(private EntityTypeManagerInterface $entityTypeManager) {
|
public function __construct(private PresentationRepositoryInterface $presentationRepository) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPastCount(): int {
|
public function getPastCount(): int {
|
||||||
$nodeStorage = $this->entityTypeManager->getStorage('node');
|
$presentations = $this->presentationRepository->getPublished();
|
||||||
|
|
||||||
$query = $nodeStorage->getQuery();
|
|
||||||
$query->condition('status', NodeInterface::PUBLISHED);
|
|
||||||
$query->condition('type', Presentation::NODE_TYPE);
|
|
||||||
$query->accessCheck();
|
|
||||||
|
|
||||||
$nodeIds = $query->execute();
|
|
||||||
|
|
||||||
/** @var Presentation[] */
|
|
||||||
$presentations = $nodeStorage->loadMultiple($nodeIds);
|
|
||||||
|
|
||||||
return array_reduce(
|
return array_reduce(
|
||||||
array: $presentations,
|
array: $presentations,
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Drupal\opd_presentations\Repository;
|
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||||
|
use Drupal\node\NodeInterface;
|
||||||
|
use Drupal\opd_presentations\Presentation;
|
||||||
|
|
||||||
|
final class PresentationNodeRepository implements PresentationRepositoryInterface {
|
||||||
|
|
||||||
|
public function __construct(private EntityTypeManagerInterface $entityTypeManager) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPublished(): array {
|
||||||
|
$nodeStorage = $this->entityTypeManager->getStorage('node');
|
||||||
|
|
||||||
|
$query = $nodeStorage->getQuery();
|
||||||
|
$query->accessCheck();
|
||||||
|
$query->condition('status', NodeInterface::PUBLISHED);
|
||||||
|
$query->condition('type', Presentation::NODE_TYPE);
|
||||||
|
|
||||||
|
$nodeIds = $query->execute();
|
||||||
|
|
||||||
|
return $nodeStorage->loadMultiple($nodeIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Drupal\opd_presentations\Repository;
|
||||||
|
|
||||||
|
interface PresentationRepositoryInterface {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Presentation[]
|
||||||
|
*/
|
||||||
|
public function getPublished(): array;
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ use Drupal\Tests\opd_presentations\Traits\PresentationCreationTrait;
|
||||||
use Drupal\opd_presentations\Date;
|
use Drupal\opd_presentations\Date;
|
||||||
use Drupal\opd_presentations\Events;
|
use Drupal\opd_presentations\Events;
|
||||||
use Drupal\opd_presentations\PresentationCounter;
|
use Drupal\opd_presentations\PresentationCounter;
|
||||||
|
use Drupal\opd_presentations\Repository\PresentationRepositoryInterface;
|
||||||
use weitzman\DrupalTestTraits\ExistingSiteBase;
|
use weitzman\DrupalTestTraits\ExistingSiteBase;
|
||||||
|
|
||||||
final class PresentationCounterTest extends ExistingSiteBase {
|
final class PresentationCounterTest extends ExistingSiteBase {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue