From 8865f212aba72793380b3e4a43e09789d553e0b2 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Sun, 21 Sep 2025 20:03:25 +0200 Subject: [PATCH] refactor(aibundle): improvement on alias for store --- src/ai-bundle/src/AiBundle.php | 43 +++++++++++++------ .../DependencyInjection/AiBundleTest.php | 32 ++++++++++++++ 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/src/ai-bundle/src/AiBundle.php b/src/ai-bundle/src/AiBundle.php index e5f48dc47..4be86539f 100644 --- a/src/ai-bundle/src/AiBundle.php +++ b/src/ai-bundle/src/AiBundle.php @@ -697,7 +697,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -729,7 +730,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -744,7 +746,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->addTag('ai.store'); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -771,7 +774,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ; $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -802,6 +806,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -832,7 +838,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -857,7 +864,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -889,7 +897,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -916,7 +925,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -954,7 +964,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -979,7 +990,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -1006,7 +1018,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -1047,7 +1060,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -1074,7 +1088,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); - $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName()); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } @@ -1093,6 +1108,8 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde ->setArguments($arguments); $container->setDefinition('ai.store.'.$type.'.'.$name, $definition); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $name); + $container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, $type.'_'.$name); } } } diff --git a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php index 9864b80be..fd9c8de8d 100644 --- a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php +++ b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php @@ -29,6 +29,7 @@ use Symfony\AI\Store\Document\Loader\InMemoryLoader; use Symfony\AI\Store\Document\Transformer\TextTrimTransformer; use Symfony\AI\Store\Document\Vectorizer; +use Symfony\AI\Store\StoreInterface; use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -100,6 +101,37 @@ public function testInjectionAgentAliasIsRegistered() $this->assertTrue($container->hasAlias(AgentInterface::class.' $myAgentAgent')); } + public function testInjectionStoreAliasIsRegistered() + { + $container = $this->buildContainer([ + 'ai' => [ + 'store' => [ + 'memory' => [ + 'main' => [ + 'strategy' => 'cosine', + ], + 'secondary_with_custom_strategy' => [ + 'strategy' => 'manhattan', + ], + ], + 'weaviate' => [ + 'main' => [ + 'endpoint' => 'http://localhost:8080', + 'api_key' => 'bar', + 'collection' => 'my_weaviate_collection', + ], + ], + ], + ], + ]); + + $this->assertTrue($container->hasAlias(StoreInterface::class.' $main')); + $this->assertTrue($container->hasAlias('.'.StoreInterface::class.' $secondary_with_custom_strategy')); + $this->assertTrue($container->hasAlias(StoreInterface::class.' $secondaryWithCustomStrategy')); + $this->assertTrue($container->hasAlias('.'.StoreInterface::class.' $weaviate_main')); + $this->assertTrue($container->hasAlias(StoreInterface::class.' $weaviateMain')); + } + public function testAgentHasTag() { $container = $this->buildContainer([