@@ -3104,6 +3104,123 @@ public function testSessionMessageStoreIsConfigured()
31043104 $ this ->assertTrue ($ sessionMessageStoreDefinition ->hasTag ('ai.message_store ' ));
31053105 }
31063106
3107+ public function testSurrealDbMessageStoreIsConfiguredWithoutCustomTable ()
3108+ {
3109+ $ container = $ this ->buildContainer ([
3110+ 'ai ' => [
3111+ 'message_store ' => [
3112+ 'surreal_db ' => [
3113+ 'custom ' => [
3114+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3115+ 'username ' => 'test ' ,
3116+ 'password ' => 'test ' ,
3117+ 'namespace ' => 'foo ' ,
3118+ 'database ' => 'bar ' ,
3119+ ],
3120+ ],
3121+ ],
3122+ ],
3123+ ]);
3124+
3125+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3126+
3127+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3128+ $ this ->assertCount (8 , $ surrealDbMessageStoreDefinition ->getArguments ());
3129+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3130+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3131+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3132+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3133+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3134+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3135+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3136+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3137+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3138+ $ this ->assertSame ('custom ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3139+
3140+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3141+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3142+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3143+ }
3144+
3145+ public function testSurrealDbMessageStoreIsConfiguredWithCustomTable ()
3146+ {
3147+ $ container = $ this ->buildContainer ([
3148+ 'ai ' => [
3149+ 'message_store ' => [
3150+ 'surreal_db ' => [
3151+ 'custom ' => [
3152+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3153+ 'username ' => 'test ' ,
3154+ 'password ' => 'test ' ,
3155+ 'namespace ' => 'foo ' ,
3156+ 'database ' => 'bar ' ,
3157+ 'table ' => 'random ' ,
3158+ ],
3159+ ],
3160+ ],
3161+ ],
3162+ ]);
3163+
3164+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3165+
3166+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3167+ $ this ->assertCount (8 , $ surrealDbMessageStoreDefinition ->getArguments ());
3168+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3169+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3170+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3171+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3172+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3173+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3174+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3175+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3176+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3177+ $ this ->assertSame ('random ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3178+
3179+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3180+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3181+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3182+ }
3183+
3184+ public function testSurrealDbMessageStoreIsConfiguredWithNamespacedUser ()
3185+ {
3186+ $ container = $ this ->buildContainer ([
3187+ 'ai ' => [
3188+ 'message_store ' => [
3189+ 'surreal_db ' => [
3190+ 'custom ' => [
3191+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3192+ 'username ' => 'test ' ,
3193+ 'password ' => 'test ' ,
3194+ 'namespace ' => 'foo ' ,
3195+ 'database ' => 'bar ' ,
3196+ 'namespaced_user ' => true ,
3197+ ],
3198+ ],
3199+ ],
3200+ ],
3201+ ]);
3202+
3203+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3204+
3205+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3206+ $ this ->assertCount (9 , $ surrealDbMessageStoreDefinition ->getArguments ());
3207+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3208+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3209+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3210+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3211+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3212+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3213+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3214+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3215+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3216+ $ this ->assertSame ('custom ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3217+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->getArgument (8 ));
3218+
3219+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3220+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3221+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3222+ }
3223+
31073224 private function buildContainer (array $ configuration ): ContainerBuilder
31083225 {
31093226 $ container = new ContainerBuilder ();
@@ -3473,6 +3590,25 @@ private function getFullConfig(): array
34733590 'identifier ' => 'session ' ,
34743591 ],
34753592 ],
3593+ 'surreal_db ' => [
3594+ 'my_surreal_db_message_store ' => [
3595+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3596+ 'username ' => 'test ' ,
3597+ 'password ' => 'test ' ,
3598+ 'namespace ' => 'foo ' ,
3599+ 'database ' => 'bar ' ,
3600+ 'namespaced_user ' => true ,
3601+ ],
3602+ 'my_surreal_db_message_store_with_custom_table ' => [
3603+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3604+ 'username ' => 'test ' ,
3605+ 'password ' => 'test ' ,
3606+ 'namespace ' => 'foo ' ,
3607+ 'database ' => 'bar ' ,
3608+ 'table ' => 'bar ' ,
3609+ 'namespaced_user ' => true ,
3610+ ],
3611+ ],
34763612 ],
34773613 'chat ' => [
34783614 'main ' => [
0 commit comments