Changed to separate repository manager for each driver

This commit is contained in:
Richard Miller 2012-01-25 11:36:50 +00:00
parent e678ce8cc6
commit ac3edc23a4
5 changed files with 14 additions and 6 deletions

View file

@ -344,14 +344,15 @@ class FOQElasticaExtension extends Extension
$container->setDefinition($finderId, $finderDef);
if ('propel' !== $typeConfig['driver']) {
$managerDef = $container->getDefinition('foq_elastica.manager');
$managerId = sprintf('foq_elastica.manager.%s', $typeConfig['driver']);
$managerDef = $container->getDefinition($managerId);
$arguments = array( $typeConfig['model'], new Reference($finderId));
if (isset($typeConfig['repository'])) {
$arguments[] = $typeConfig['repository'];
}
$managerDef->addMethodCall('addEntity', $arguments);
$container->setDefinition('foq_elastica.manager', $managerDef);
$container->setDefinition($managerId, $managerDef);
}
return $finderId;

View file

@ -61,10 +61,6 @@
<argument /> <!-- options -->
</service>
<service id="foq_elastica.manager" class="%foq_elastica.manager.class%">
<argument type="service" id="annotation_reader"/>
</service>
<service id="foq_elastica.elastica_to_model_transformer.collection.prototype" class="%foq_elastica.elastica_to_model_transformer.collection.class%" public="true" abstract="true">
<argument type="collection" /> <!-- transformers -->
<argument type="collection" /> <!-- options -->

View file

@ -26,6 +26,9 @@
<argument type="collection" /> <!-- options -->
</service>
<service id="foq_elastica.manager.mongodb" class="%foq_elastica.manager.class%">
<argument type="service" id="annotation_reader"/>
</service>
</services>

View file

@ -26,6 +26,10 @@
<argument type="collection" /> <!-- options -->
</service>
<service id="foq_elastica.manager.orm" class="%foq_elastica.manager.class%">
<argument type="service" id="annotation_reader"/>
</service>
</services>
</container>

View file

@ -17,6 +17,10 @@
<argument type="collection" /> <!-- options -->
</service>
<service id="foq_elastica.manager.propel" class="%foq_elastica.manager.class%">
<argument type="service" id="annotation_reader"/>
</service>
</services>
</container>