Skip to content

Commit 7dd6dc6

Browse files
author
Jeroen de Graaf
committed
Configure all service definitions
1 parent ed5da4b commit 7dd6dc6

File tree

3 files changed

+286
-7
lines changed

3 files changed

+286
-7
lines changed

composer.json

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "gember/symfony-bundle",
2+
"name": "gember/event-sourcing-symfony-bundle",
33
"description": "Symfony Bundle for Gember Event Sourcing (gember/event-sourcing)",
44
"license": "MIT",
55
"type": "library",
@@ -22,15 +22,19 @@
2222
],
2323
"require": {
2424
"php": "^8.3",
25-
"symfony/http-kernel": "^7.1",
26-
"gember/event-sourcing": "dev-main",
27-
"gember/rdbms-event-store-doctrine-dbal": "dev-main",
2825
"gember/cache-psr": "dev-main",
26+
"gember/event-sourcing": "dev-main",
2927
"gember/file-finder-symfony": "dev-main",
3028
"gember/file-reflector-roave": "dev-main",
3129
"gember/identity-generator-symfony": "dev-main",
3230
"gember/message-bus-symfony": "dev-main",
33-
"gember/serializer-symfony": "dev-main"
31+
"gember/rdbms-event-store-doctrine-dbal": "dev-main",
32+
"gember/serializer-symfony": "dev-main",
33+
"symfony/config": "^7.1",
34+
"symfony/console": "^7.1",
35+
"symfony/dependency-injection": "^7.1",
36+
"symfony/event-dispatcher": "^7.1",
37+
"symfony/http-kernel": "^7.1"
3438
},
3539
"require-dev": {
3640
"captainhook/captainhook": "^5.23",
@@ -41,12 +45,12 @@
4145
},
4246
"autoload": {
4347
"psr-4": {
44-
"Gember\\SymfonyBundle\\": "src/"
48+
"Gember\\EventSourcingSymfonyBundle\\": "src/"
4549
}
4650
},
4751
"autoload-dev": {
4852
"psr-4": {
49-
"Gember\\SymfonyBundle\\Test\\": "tests/"
53+
"Gember\\EventSourcingSymfonyBundle\\Test\\": "tests/"
5054
}
5155
},
5256
"config": {

config/services.yaml

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
services:
2+
_defaults:
3+
public: false
4+
5+
gember.event_sourcing.event_store.event_store:
6+
class: Gember\EventSourcing\EventStore\Rdbms\RdbmsEventStore
7+
arguments:
8+
- '@gember.event_sourcing.resolver.domain_event.normalized_event_name.normalized_event_name_resolver'
9+
- '@gember.event_sourcing.event_store.rdbms.rdbms_domain_event_envelope_factory'
10+
- '@gember.event_sourcing.event_store.rdbms.rdbms_event_factory'
11+
- '@gember.event_sourcing.event_store.rdbms.rdbms_event_store_repository'
12+
13+
gember.event_sourcing.event_store.domain_event_envelope_factory:
14+
class: Gember\EventSourcing\EventStore\DomainEventEnvelopeFactory
15+
arguments:
16+
- '@gember.event_sourcing.resolver.domain_event.domain_ids.domain_ids_resolver'
17+
- '@gember.event_sourcing.util.generator.identity.identity_generator'
18+
- '@gember.event_sourcing.util.time.clock.clock'
19+
20+
gember.event_sourcing.event_store.rdbms.rdbms_domain_event_envelope_factory:
21+
class: Gember\EventSourcing\EventStore\Rdbms\RdbmsDomainEventEnvelopeFactory
22+
arguments:
23+
- '@gember.event_sourcing.util.serialization.serializer.serializer'
24+
- '@gember.event_sourcing.registry.event_registry'
25+
26+
gember.event_sourcing.event_store.rdbms.rdbms_event_factory:
27+
class: Gember\EventSourcing\EventStore\Rdbms\RdbmsEventFactory
28+
arguments:
29+
- '@gember.event_sourcing.resolver.domain_event.normalized_event_name.normalized_event_name_resolver'
30+
- '@gember.event_sourcing.util.serialization.serializer.serializer'
31+
32+
gember.event_sourcing.event_store.rdbms.rdbms_event_store_repository:
33+
class: Gember\RdbmsEventStoreDoctrineDbal\DoctrineDbalRdbmsEventStoreRepository
34+
arguments:
35+
- '@gember.doctrine.dbal.connection'
36+
- '@gember.rdbms_event_store_doctrine_dbal.table_schema.event_store_table_schema'
37+
- '@gember.rdbms_event_store_doctrine_dbal.table_schema.event_store_relation_table_schema'
38+
- '@gember.rdbms_event_store_doctrine_dbal.doctrine_dbal_rdbms_event_factory'
39+
40+
gember.doctrine.dbal.connection: ~
41+
42+
gember.rdbms_event_store_doctrine_dbal.table_schema.event_store_table_schema:
43+
class: Gember\RdbmsEventStoreDoctrineDbal\TableSchema\EventStoreTableSchema
44+
factory: [
45+
Gember\RdbmsEventStoreDoctrineDbal\TableSchema\TableSchemaFactory,
46+
'createDefaultEventStore'
47+
]
48+
49+
gember.rdbms_event_store_doctrine_dbal.table_schema.event_store_relation_table_schema:
50+
class: Gember\RdbmsEventStoreDoctrineDbal\TableSchema\EventStoreRelationTableSchema
51+
factory: [
52+
Gember\RdbmsEventStoreDoctrineDbal\TableSchema\TableSchemaFactory,
53+
'createDefaultEventStoreRelation'
54+
]
55+
56+
gember.rdbms_event_store_doctrine_dbal.doctrine_dbal_rdbms_event_factory:
57+
class: Gember\RdbmsEventStoreDoctrineDbal\DoctrineDbalRdbmsEventFactory
58+
59+
gember.event_sourcing.registry.event_registry:
60+
class: Gember\EventSourcing\Registry\Reflector\ReflectorEventRegistry
61+
arguments:
62+
- '@gember.event_sourcing.util.file.finder.finder'
63+
- '@gember.event_sourcing.util.file.reflector.reflector'
64+
- '@gember.event_sourcing.resolver.domain_event.normalized_event_name.normalized_event_name_resolver'
65+
66+
gember.event_sourcing.registry.cached.cached_event_registry_decorator:
67+
class: Gember\EventSourcing\Registry\Cached\CachedEventRegistryDecorator
68+
#decorates: gember.event_sourcing.registry.event_registry
69+
arguments:
70+
- '@.inner'
71+
- '@gember.event_sourcing.util.cache.cache'
72+
73+
gember.event_sourcing.repository.domain_context_repository:
74+
class: Gember\EventSourcing\Repository\EventSourced\EventSourcedDomainContextRepository
75+
arguments:
76+
- '@gember.event_sourcing.event_store.event_store'
77+
- '@gember.event_sourcing.event_store.domain_event_envelope_factory'
78+
- '@gember.event_sourcing.resolver.domain_context.subscribed_events.subscribed_events_resolver'
79+
- '@gember.event_sourcing.util.messaging.message_bus.event_bus'
80+
81+
Gember\EventSourcing\Repository\DomainContextRepository: '@gember.event_sourcing.repository.domain_context_repository'
82+
83+
gember.event_sourcing.resolver.domain_context.domain_id_properties.domain_id_properties_resolver:
84+
class: Gember\EventSourcing\Resolver\DomainContext\DomainIdProperties\Attribute\AttributeDomainIdPropertiesResolver
85+
arguments:
86+
- '@gember.event_sourcing.util.attribute.resolver.attribute_resolver'
87+
88+
gember.event_sourcing.resolver.domain_context.subscribed_events.subscribed_events_resolver:
89+
class: Gember\EventSourcing\Resolver\DomainContext\SubscribedEvents\Attribute\AttributeSubscribedEventsResolver
90+
arguments:
91+
- '@gember.event_sourcing.util.attribute.resolver.attribute_resolver'
92+
93+
gember.event_sourcing.resolver.domain_context.subscriber_method_for_event.subscriber_method_for_event_resolver:
94+
class: Gember\EventSourcing\Resolver\DomainContext\SubscriberMethodForEvent\Attribute\AttributeSubscriberMethodForEventResolver
95+
arguments:
96+
- '@gember.event_sourcing.util.attribute.resolver.attribute_resolver'
97+
98+
gember.event_sourcing.resolver.domain_event.domain_ids.domain_ids_resolver:
99+
class: Gember\EventSourcing\Resolver\DomainEvent\DomainIds\Stacked\StackedDomainIdsResolver
100+
arguments:
101+
- [
102+
'@gember.event_sourcing.resolver.domain_event.domain_ids.attribute.attribute_domain_ids_resolver',
103+
'@gember.event_sourcing.resolver.domain_event.domain_ids.interface.interface_domain_ids_resolver'
104+
]
105+
106+
gember.event_sourcing.resolver.domain_event.domain_ids.attribute.attribute_domain_ids_resolver:
107+
class: Gember\EventSourcing\Resolver\DomainEvent\DomainIds\Attribute\AttributeDomainIdsResolver
108+
arguments:
109+
- '@gember.event_sourcing.util.attribute.resolver.attribute_resolver'
110+
111+
gember.event_sourcing.resolver.domain_event.domain_ids.interface.interface_domain_ids_resolver:
112+
class: Gember\EventSourcing\Resolver\DomainEvent\DomainIds\Interface\InterfaceDomainIdsResolver
113+
114+
gember.event_sourcing.resolver.domain_event.normalized_event_name.normalized_event_name_resolver:
115+
class: Gember\EventSourcing\Resolver\DomainEvent\NormalizedEventName\Stacked\StackedNormalizedEventNameResolver
116+
arguments:
117+
- [
118+
'@gember.event_sourcing.resolver.domain_event.normalized_event_name.attribute.attribute_normalized_event_name_resolver',
119+
'@gember.event_sourcing.resolver.domain_event.normalized_event_name.interface.interface_normalized_event_name_resolver',
120+
'@gember.event_sourcing.resolver.domain_event.normalized_event_name.class_name.class_name_normalized_event_name_resolver'
121+
]
122+
123+
gember.event_sourcing.resolver.domain_event.normalized_event_name.attribute.attribute_normalized_event_name_resolver:
124+
class: Gember\EventSourcing\Resolver\DomainEvent\NormalizedEventName\Attribute\AttributeNormalizedEventNameResolver
125+
arguments:
126+
- '@gember.event_sourcing.util.attribute.resolver.attribute_resolver'
127+
128+
gember.event_sourcing.resolver.domain_event.normalized_event_name.interface.interface_normalized_event_name_resolver:
129+
class: Gember\EventSourcing\Resolver\DomainEvent\NormalizedEventName\Interface\InterfaceNormalizedEventNameResolver
130+
131+
gember.event_sourcing.resolver.domain_event.normalized_event_name.class_name.class_name_normalized_event_name_resolver:
132+
class: Gember\EventSourcing\Resolver\DomainEvent\NormalizedEventName\ClassName\ClassNameNormalizedEventNameResolver
133+
arguments:
134+
- '@gember.event_sourcing.util.string.friendly_class_namer.friendly_class_namer'
135+
136+
gember.event_sourcing.util.attribute.resolver.attribute_resolver:
137+
class: Gember\EventSourcing\Util\Attribute\Resolver\Reflector\ReflectorAttributeResolver
138+
139+
gember.event_sourcing.util.resolver.cached.cached_attribute_resolver_decorator:
140+
class: Gember\EventSourcing\Util\Attribute\Resolver\Cached\CachedAttributeResolverDecorator
141+
#decorates: gember.event_sourcing.util.attribute.resolver.attribute_resolver
142+
arguments:
143+
- '@.inner'
144+
- '@gember.event_sourcing.util.string.friendly_class_namer.friendly_class_namer'
145+
- '@gember.event_sourcing.util.cache.cache'
146+
147+
gember.event_sourcing.util.cache.cache:
148+
class: Gember\CachePsr\PsrSimpleCache
149+
arguments:
150+
- '@gember.psr.simple_cache.cache_interface'
151+
152+
gember.psr.simple_cache.cache_interface: '@gember.symfony.component.cache.psr16_cache'
153+
154+
gember.symfony.component.cache.psr16_cache:
155+
class: Symfony\Component\Cache\Psr16Cache
156+
arguments:
157+
- '@gember.psr.cache.cache_item_pool_interface'
158+
159+
gember.psr.cache.cache_item_pool_interface: ~
160+
161+
gember.event_sourcing.util.file.finder.finder:
162+
class: Gember\FileFinderSymfony\SymfonyFinder
163+
arguments:
164+
- '@gember.file_finder_symfony.symfony_finder_factory'
165+
166+
gember.file_finder_symfony.symfony_finder_factory:
167+
class: Gember\FileFinderSymfony\SymfonyFinderFactory
168+
169+
gember.event_sourcing.util.file.reflector.reflector:
170+
class: Gember\FileReflectorRoave\RoaveBetterReflectionReflector
171+
arguments:
172+
- '@gember.file_reflector_roave.roave_better_reflection_factory'
173+
174+
gember.file_reflector_roave.roave_better_reflection_factory:
175+
class: Gember\FileReflectorRoave\RoaveBetterReflectionFactory
176+
177+
gember.event_sourcing.util.generator.identity.identity_generator: '@gember.identity_generator_symfony.uuid.symfony_uuid_identity_generator'
178+
179+
Gember\EventSourcing\Util\Generator\Identity\IdentityGenerator: '@gember.event_sourcing.util.generator.identity.identity_generator'
180+
181+
gember.identity_generator_symfony.uuid.symfony_uuid_identity_generator:
182+
class: Gember\IdentityGeneratorSymfony\Uuid\SymfonyUuidIdentityGenerator
183+
arguments:
184+
- '@Symfony\Component\Uid\Factory\UuidFactory'
185+
186+
gember.identity_generator_symfony.ulid.symfony_ulid_identity_generator:
187+
class: Gember\IdentityGeneratorSymfony\Ulid\SymfonyUlidIdentityGenerator
188+
arguments:
189+
- '@Symfony\Component\Uid\Factory\UlidFactory'
190+
191+
gember.event_sourcing.util.messaging.message_bus.event_bus:
192+
class: Gember\MessageBusSymfony\SymfonyEventBus
193+
arguments:
194+
- '@gember.symfony.component.messenger.message_bus.event_bus'
195+
196+
gember.symfony.component.messenger.message_bus.event_bus: ~
197+
198+
gember.event_sourcing.util.serialization.serializer.serializer:
199+
class: Gember\EventSourcing\Util\Serialization\Serializer\Stacked\StackedSerializer
200+
arguments:
201+
- [
202+
'@gember.event_sourcing.util.serialization.serializer.serializable_domain_event.serializable_domain_event_serializer',
203+
'@gember.serializer_symfony.symfony_serializer'
204+
]
205+
206+
gember.event_sourcing.util.serialization.serializer.serializable_domain_event.serializable_domain_event_serializer:
207+
class: Gember\EventSourcing\Util\Serialization\Serializer\SerializableDomainEvent\SerializableDomainEventSerializer
208+
209+
gember.serializer_symfony.symfony_serializer:
210+
class: Gember\SerializerSymfony\SymfonySerializer
211+
arguments:
212+
- '@gember.symfony.component.serializer.serializer_interface'
213+
214+
gember.symfony.component.serializer.serializer_interface: ~
215+
216+
gember.event_sourcing.util.string.friendly_class_namer.friendly_class_namer:
217+
class: Gember\EventSourcing\Util\String\FriendlyClassNamer\Native\NativeFriendlyClassNamer
218+
arguments:
219+
- '@gember.event_sourcing.util.string.inflector.inflector'
220+
221+
gember.event_sourcing.util.string.inflector.inflector:
222+
class: Gember\EventSourcing\Util\String\Inflector\Native\NativeInflector
223+
224+
gember.event_sourcing.util.time.clock.clock:
225+
class: Gember\EventSourcing\Util\Time\Clock\Native\NativeClock
226+
227+
gember.event_sourcing_symfony_bundle.listener.initialize_domain_context_attribute_registry_listener:
228+
class: Gember\EventSourcingSymfonyBundle\Listener\InitializeDomainContextAttributeRegistryListener
229+
tags: ['kernel.event_subscriber']
230+
arguments:
231+
- '@gember.event_sourcing.resolver.domain_context.domain_id_properties.domain_id_properties_resolver'
232+
- '@gember.event_sourcing.resolver.domain_context.subscriber_method_for_event.subscriber_method_for_event_resolver'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
6+
namespace Gember\EventSourcingSymfonyBundle\Listener;
7+
8+
use Gember\EventSourcing\DomainContext\DomainContextAttributeRegistry;
9+
use Gember\EventSourcing\Resolver\DomainContext\DomainIdProperties\DomainIdPropertiesResolver;
10+
use Gember\EventSourcing\Resolver\DomainContext\SubscriberMethodForEvent\SubscriberMethodForEventResolver;
11+
use Symfony\Component\Console\ConsoleEvents;
12+
use Symfony\Component\Console\Event\ConsoleCommandEvent;
13+
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
14+
use Symfony\Component\HttpKernel\Event\RequestEvent;
15+
use Symfony\Component\HttpKernel\KernelEvents;
16+
17+
final readonly class InitializeDomainContextAttributeRegistryListener implements EventSubscriberInterface
18+
{
19+
public function __construct(
20+
private DomainIdPropertiesResolver $domainIdPropertiesResolver,
21+
private SubscriberMethodForEventResolver $subscriberMethodForEventResolver,
22+
) {
23+
}
24+
25+
/**
26+
* @return array<string, string>
27+
*/
28+
public static function getSubscribedEvents() : array
29+
{
30+
return [
31+
ConsoleEvents::COMMAND => 'onEvent',
32+
KernelEvents::REQUEST => 'onEvent',
33+
];
34+
}
35+
36+
public function onEvent(ConsoleCommandEvent|RequestEvent $event): void
37+
{
38+
DomainContextAttributeRegistry::initialize(
39+
$this->domainIdPropertiesResolver,
40+
$this->subscriberMethodForEventResolver,
41+
);
42+
}
43+
}

0 commit comments

Comments
 (0)