From cb43be72ead5611cfe9b462d30ec9f8cc9c7e0f7 Mon Sep 17 00:00:00 2001 From: David Badura Date: Tue, 23 Apr 2024 20:28:58 +0200 Subject: [PATCH] fix new event sourcing version --- composer.json | 2 +- src/Controller/EventController.php | 10 ++++++++-- src/Controller/InspectionController.php | 12 +++++++----- src/Controller/StoreController.php | 19 ++++++++++++------- src/Controller/SubscriptionController.php | 2 +- .../PatchlevelEventSourcingAdminExtension.php | 4 ++-- templates/event/index.html.twig | 4 +++- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/composer.json b/composer.json index 3ae3c03..5885f8e 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ ], "require": { "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "patchlevel/event-sourcing-bundle": "^3.0.0-rc6", + "patchlevel/event-sourcing-bundle": "^3.0.0-rc12", "symfony/asset": "^7.0", "symfony/asset-mapper": "^7.0", "symfony/config": "^5.4.31|^6.4.0|^7.0.0", diff --git a/src/Controller/EventController.php b/src/Controller/EventController.php index 9fd2258..f4411b8 100644 --- a/src/Controller/EventController.php +++ b/src/Controller/EventController.php @@ -21,7 +21,7 @@ final class EventController public function __construct( private readonly Environment $twig, private readonly EventRegistry $eventRegistry, - private readonly ListenerProvider $listenerProvider, + private readonly ListenerProvider|null $listenerProvider, private readonly iterable $subscribers, private readonly SubscriberMetadataFactory $subscriberMetadataFactory, ) @@ -46,8 +46,12 @@ public function indexAction(): Response ])); } - private function listenerMethods(string $eventClass): array + private function listenerMethods(string $eventClass): array|null { + if ($this->listenerProvider === null) { + return null; + } + return array_map( static fn(ListenerDescriptor $listener) => $listener->name(), $this->listenerProvider->listenersForEvent($eventClass), @@ -58,6 +62,8 @@ private function subscribersMethods(string $eventClass): array { $result = []; + dump($this->subscribers); + foreach ($this->subscribers as $subscriber) { $metadata = $this->subscriberMetadataFactory->metadata($subscriber::class); diff --git a/src/Controller/InspectionController.php b/src/Controller/InspectionController.php index ff64031..d58c678 100644 --- a/src/Controller/InspectionController.php +++ b/src/Controller/InspectionController.php @@ -10,7 +10,9 @@ use Patchlevel\EventSourcing\Metadata\AggregateRoot\AggregateRootMetadataFactory; use Patchlevel\EventSourcing\Metadata\AggregateRoot\AggregateRootRegistry; use Patchlevel\EventSourcing\Snapshot\SnapshotStore; -use Patchlevel\EventSourcing\Store\Criteria; +use Patchlevel\EventSourcing\Store\Criteria\AggregateIdCriterion; +use Patchlevel\EventSourcing\Store\Criteria\AggregateNameCriterion; +use Patchlevel\EventSourcing\Store\Criteria\Criteria; use Patchlevel\EventSourcing\Store\Store; use Patchlevel\EventSourcing\Store\Stream; use Patchlevel\Hydrator\Hydrator; @@ -82,8 +84,8 @@ public function showAction(Request $request, string $aggregateName, string $aggr $aggregate = $this->aggregate($aggregateName, $aggregateId, $until); $criteria = new Criteria( - aggregateName: $aggregateName, - aggregateId: $aggregateId, + new AggregateNameCriterion($aggregateName), + new AggregateIdCriterion($aggregateId), ); $messages = $this->store->load( @@ -138,8 +140,8 @@ public function showAction(Request $request, string $aggregateName, string $aggr private function aggregate(string $aggregateName, string $aggregateId, int|null $until = null): AggregateRoot { $criteria = new Criteria( - aggregateName: $aggregateName, - aggregateId: $aggregateId, + new AggregateNameCriterion($aggregateName), + new AggregateIdCriterion($aggregateId), ); $stream = null; diff --git a/src/Controller/StoreController.php b/src/Controller/StoreController.php index d5b282c..180dd2d 100644 --- a/src/Controller/StoreController.php +++ b/src/Controller/StoreController.php @@ -5,7 +5,8 @@ namespace Patchlevel\EventSourcingAdminBundle\Controller; use Patchlevel\EventSourcing\Metadata\AggregateRoot\AggregateRootRegistry; -use Patchlevel\EventSourcing\Store\Criteria; +use Patchlevel\EventSourcing\Store\Criteria\Criteria; +use Patchlevel\EventSourcing\Store\Criteria\CriteriaBuilder; use Patchlevel\EventSourcing\Store\Store; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -49,12 +50,16 @@ public function showAction(Request $request): Response private function criteria(Request $request): Criteria { - $aggregateName = $request->query->get('aggregate'); - $aggregateId = $request->query->get('aggregateId'); + $criteriaBuilder = new CriteriaBuilder(); - return new Criteria( - aggregateName: $aggregateName, - aggregateId: $aggregateId, - ); + if ($request->query->get('aggregate')) { + $criteriaBuilder->aggregateName($request->query->get('aggregate')); + } + + if ($request->query->get('aggregateId')) { + $criteriaBuilder->aggregateId($request->query->get('aggregateId')); + } + + return $criteriaBuilder->build(); } } diff --git a/src/Controller/SubscriptionController.php b/src/Controller/SubscriptionController.php index 8670e20..f9e8882 100644 --- a/src/Controller/SubscriptionController.php +++ b/src/Controller/SubscriptionController.php @@ -112,7 +112,7 @@ public function setupAction(string $id): Response { $criteria = new SubscriptionEngineCriteria([$id]); - $this->engine->setup($criteria); + $this->engine->setup($criteria, skipBooting: true); return new RedirectResponse( $this->router->generate('patchlevel_event_sourcing_admin_subscription_show'), diff --git a/src/DependencyInjection/PatchlevelEventSourcingAdminExtension.php b/src/DependencyInjection/PatchlevelEventSourcingAdminExtension.php index 502cf5e..ba1db0e 100644 --- a/src/DependencyInjection/PatchlevelEventSourcingAdminExtension.php +++ b/src/DependencyInjection/PatchlevelEventSourcingAdminExtension.php @@ -95,8 +95,8 @@ public function load(array $configs, ContainerBuilder $container): void ->setArguments([ new Reference('twig'), new Reference(EventRegistry::class), - new Reference(ListenerProvider::class), - new TaggedIteratorArgument('event_sourcing.projector'), + new Reference(ListenerProvider::class, ContainerInterface::NULL_ON_INVALID_REFERENCE), + new TaggedIteratorArgument('event_sourcing.subscriber'), new Reference(SubscriberMetadataFactory::class), new Reference(TraceProjector::class, ContainerInterface::NULL_ON_INVALID_REFERENCE), ]) diff --git a/templates/event/index.html.twig b/templates/event/index.html.twig index 7d7fd22..e4d2fd9 100644 --- a/templates/event/index.html.twig +++ b/templates/event/index.html.twig @@ -64,7 +64,7 @@
- Projectors ({{ event.subscribers|length }}) + Subscribers ({{ event.subscribers|length }})
+ {% if event.listeners %}
Listeners ({{ event.listeners|length }})
@@ -86,6 +87,7 @@
  • no listeners
  • {% endfor %} + {% endif %} {% endif %} {% endfor %}