Skip to content

Commit ed5da4b

Browse files
author
Jeroen de Graaf
committed
Rename to GemberEventSourcingBundle
1 parent 0442dcd commit ed5da4b

File tree

2 files changed

+141
-12
lines changed

2 files changed

+141
-12
lines changed

src/GemberEventSourcingBundle.php

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Gember\EventSourcingSymfonyBundle;
6+
7+
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
8+
use Symfony\Component\DependencyInjection\ContainerBuilder;
9+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
10+
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
11+
12+
final class GemberEventSourcingBundle extends AbstractBundle
13+
{
14+
public function configure(DefinitionConfigurator $definition): void
15+
{
16+
$definition->rootNode()
17+
->children()
18+
->arrayNode('cache')
19+
->children()
20+
->booleanNode('enabled')->end()
21+
->arrayNode('psr6')
22+
->children()
23+
->scalarNode('service')->end()
24+
->end()
25+
->end()
26+
->arrayNode('psr16')
27+
->children()
28+
->scalarNode('service')->end()
29+
->end()
30+
->end()
31+
->end()
32+
->end()
33+
->arrayNode('event_registry')
34+
->children()
35+
->arrayNode('reflector')
36+
->children()
37+
->scalarNode('path')->end()
38+
->end()
39+
->end()
40+
->end()
41+
->end()
42+
->arrayNode('message_bus')
43+
->children()
44+
->arrayNode('symfony')
45+
->children()
46+
->scalarNode('event_bus')->end()
47+
->end()
48+
->end()
49+
->end()
50+
->end()
51+
->arrayNode('event_store')
52+
->children()
53+
->arrayNode('rdbms')
54+
->children()
55+
->arrayNode('doctrine_dbal')
56+
->children()
57+
->scalarNode('connection')->end()
58+
->end()
59+
->end()
60+
->end()
61+
->end()
62+
->end()
63+
->end()
64+
->arrayNode('generator')
65+
->children()
66+
->arrayNode('identity')
67+
->children()
68+
->scalarNode('service')->end()
69+
->end()
70+
->end()
71+
->end()
72+
->end()
73+
->arrayNode('serializer')
74+
->children()
75+
->arrayNode('symfony')
76+
->children()
77+
->scalarNode('serializer')->end()
78+
->end()
79+
->end()
80+
->end()
81+
->end()
82+
->end();
83+
}
84+
85+
public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
86+
{
87+
$container->import(__DIR__ . '/../config/services.yaml');
88+
$services = $container->services();
89+
90+
if ($config['cache']['enabled'] ?? false) {
91+
$services->get('gember.event_sourcing.registry.cached.cached_event_registry_decorator')
92+
->decorate('gember.event_sourcing.registry.event_registry');
93+
94+
$services->get('gember.event_sourcing.util.resolver.cached.cached_attribute_resolver_decorator')
95+
->decorate('gember.event_sourcing.util.attribute.resolver.attribute_resolver');
96+
97+
$cacheType = isset($config['cache']['psr16']) ? 'psr16' : 'psr6';
98+
$cacheService = ltrim($config['cache'][$cacheType]['service'] ?? 'cache.app', '@');
99+
100+
switch ($cacheType) {
101+
case 'psr6':
102+
$services->alias('gember.psr.cache.cache_item_pool_interface', $cacheService);
103+
break;
104+
default:
105+
$services->alias('gember.psr.simple_cache.cache_interface', $cacheService);
106+
$services->remove('gember.psr.cache.cache_item_pool_interface');
107+
break;
108+
}
109+
} else {
110+
// Remove all cache related service definitions
111+
$services->remove('gember.event_sourcing.util.cache.cache');
112+
$services->remove('gember.symfony.component.cache.psr16_cache');
113+
$services->remove('gember.psr.cache.cache_item_pool_interface');
114+
}
115+
116+
$services->get('gember.event_sourcing.registry.event_registry')
117+
->arg('$path', $config['registry']['event_registry']['reflector']['path'] ?? '%kernel.project_dir%/src');
118+
119+
$services->alias(
120+
'gember.symfony.component.messenger.message_bus.event_bus',
121+
ltrim($config['message_bus']['symfony']['event_bus'] ?? 'event.bus', '@')
122+
);
123+
124+
$services->alias(
125+
'gember.doctrine.dbal.connection',
126+
ltrim($config['event_store']['rdbms']['doctrine_dbal']['connection'] ?? 'Doctrine\DBAL\Connection', '@')
127+
);
128+
129+
if (!empty($config['generator']['identity']['service'] ?? null)) {
130+
$services->alias(
131+
'gember.event_sourcing.util.generator.identity.identity_generator',
132+
ltrim($config['generator']['identity']['service'], '@')
133+
);
134+
}
135+
136+
$services->alias(
137+
'gember.symfony.component.serializer.serializer_interface',
138+
ltrim($config['serializer']['symfony']['serializer'] ?? 'Symfony\Component\Serializer\SerializerInterface', '@')
139+
);
140+
}
141+
}

src/GemberSymfonyBundle.php

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)