Skip to content

Commit

Permalink
Allow to use other connection and entity manager than "default" (#355)
Browse files Browse the repository at this point in the history
  • Loading branch information
phansys committed Feb 16, 2021
1 parent cc77e09 commit 2927df6
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 7 deletions.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,19 @@ simple_things_entity_audit:
- updated_at
```
In order to work with other connection or entity manager than "default", use these settings:
```yml
simple_things_entity_audit:
connection: custom
entity_manager: custom
```
### Creating new tables
Call the command below to see the new tables in the update schema queue.
```bash
./app/console doctrine:schema:update --dump-sql
./app/console doctrine:schema:update --dump-sql
```

**Notice**: EntityAudit currently **only** works with a DBAL Connection and EntityManager named **"default"**.
Expand Down
2 changes: 2 additions & 0 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public function getConfigTreeBuilder()
$builder = new TreeBuilder('simple_things_entity_audit');
$builder->getRootNode()
->children()
->scalarNode('connection')->defaultValue('default')->end()
->scalarNode('entity_manager')->defaultValue('default')->end()
->arrayNode('audited_entities')
->prototype('scalar')->end()
->end()
Expand Down
2 changes: 2 additions & 0 deletions src/DependencyInjection/SimpleThingsEntityAuditExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public function load(array $configs, ContainerBuilder $container): void
$loader->load('auditable.xml');

$configurables = [
'connection',
'entity_manager',
'audited_entities',
'table_prefix',
'table_suffix',
Expand Down
13 changes: 10 additions & 3 deletions src/Resources/config/auditable.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="simplethings.entityaudit.connection" type="string"/>
<parameter key="simplethings.entityaudit.entity_manager" type="string"/>
<parameter key="simplethings.entityaudit.audited_entities" type="collection"/>
<parameter key="simplethings.entityaudit.global_ignore_columns" type="collection"/>
<parameter key="simplethings.entityaudit.table_prefix" type="string"/>
Expand All @@ -17,16 +19,21 @@
<service id="SimpleThings\EntityAudit\AuditManager" alias="simplethings_entityaudit.manager" public="true"/>
<service id="simplethings_entityaudit.reader" class="SimpleThings\EntityAudit\AuditReader" public="true">
<factory service="simplethings_entityaudit.manager" method="createAuditReader"/>
<argument type="service" id="doctrine.orm.default_entity_manager"/>
<argument type="service">
<service class="Doctrine\ORM\EntityManager">
<factory service="doctrine" method="getManager"/>
<argument type="string">%simplethings.entityaudit.entity_manager%</argument>
</service>
</argument>
</service>
<service id="SimpleThings\EntityAudit\AuditReader" alias="simplethings_entityaudit.reader"/>
<service id="simplethings_entityaudit.log_revisions_listener" class="SimpleThings\EntityAudit\EventListener\LogRevisionsListener">
<argument id="simplethings_entityaudit.manager" type="service"/>
<tag name="doctrine.event_subscriber" connection="default"/>
<tag name="doctrine.event_subscriber" connection="%simplethings.entityaudit.connection%"/>
</service>
<service id="simplethings_entityaudit.create_schema_listener" class="SimpleThings\EntityAudit\EventListener\CreateSchemaListener">
<argument id="simplethings_entityaudit.manager" type="service"/>
<tag name="doctrine.event_subscriber" connection="default"/>
<tag name="doctrine.event_subscriber" connection="%simplethings.entityaudit.connection%"/>
</service>
<service id="simplethings_entityaudit.username_callable.token_storage" class="SimpleThings\EntityAudit\User\TokenStorageUsernameCallable">
<argument id="service_container" type="service"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ public function testItRegistersDefaultServices(): void
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.manager', 0, 'simplethings_entityaudit.config');

$this->assertContainerBuilderHasService('simplethings_entityaudit.reader', 'SimpleThings\EntityAudit\AuditReader');
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.reader', 0, 'doctrine.orm.default_entity_manager');
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.reader', 0);

$this->assertContainerBuilderHasService('simplethings_entityaudit.log_revisions_listener', 'SimpleThings\EntityAudit\EventListener\LogRevisionsListener');
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.log_revisions_listener', 0, 'simplethings_entityaudit.manager');
$this->assertContainerBuilderHasServiceDefinitionWithTag('simplethings_entityaudit.log_revisions_listener', 'doctrine.event_subscriber', ['connection' => 'default']);
$this->assertContainerBuilderHasServiceDefinitionWithTag('simplethings_entityaudit.log_revisions_listener', 'doctrine.event_subscriber', ['connection' => '%simplethings.entityaudit.connection%']);

$this->assertContainerBuilderHasService('simplethings_entityaudit.create_schema_listener', 'SimpleThings\EntityAudit\EventListener\CreateSchemaListener');
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.create_schema_listener', 0, 'simplethings_entityaudit.manager');
$this->assertContainerBuilderHasServiceDefinitionWithTag('simplethings_entityaudit.create_schema_listener', 'doctrine.event_subscriber', ['connection' => 'default']);
$this->assertContainerBuilderHasServiceDefinitionWithTag('simplethings_entityaudit.create_schema_listener', 'doctrine.event_subscriber', ['connection' => '%simplethings.entityaudit.connection%']);

$this->assertContainerBuilderHasService('simplethings_entityaudit.username_callable.token_storage', 'SimpleThings\EntityAudit\User\TokenStorageUsernameCallable');
$this->assertContainerBuilderHasServiceDefinitionWithArgument('simplethings_entityaudit.username_callable.token_storage', 0, 'service_container');
Expand Down Expand Up @@ -79,6 +79,8 @@ public function testItSetsDefaultParameters(): void
{
$this->load([]);

$this->assertContainerBuilderHasParameter('simplethings.entityaudit.connection', 'default');
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.entity_manager', 'default');
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.audited_entities', []);
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.global_ignore_columns', []);
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.table_prefix', '');
Expand All @@ -92,6 +94,8 @@ public function testItSetsDefaultParameters(): void
public function testItSetsConfiguredParameters(): void
{
$this->load([
'connection' => 'my_custom_connection',
'entity_manager' => 'my_custom_entity_manager',
'audited_entities' => ['Entity1', 'Entity2'],
'global_ignore_columns' => ['created_at', 'updated_at'],
'table_prefix' => 'prefix',
Expand All @@ -102,6 +106,8 @@ public function testItSetsConfiguredParameters(): void
'revision_type_field_name' => 'action',
]);

$this->assertContainerBuilderHasParameter('simplethings.entityaudit.connection', 'my_custom_connection');
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.entity_manager', 'my_custom_entity_manager');
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.audited_entities', ['Entity1', 'Entity2']);
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.global_ignore_columns', ['created_at', 'updated_at']);
$this->assertContainerBuilderHasParameter('simplethings.entityaudit.table_prefix', 'prefix');
Expand Down

0 comments on commit 2927df6

Please sign in to comment.