@@ -3080,6 +3080,123 @@ public function testSessionMessageStoreIsConfigured()
30803080 $ this ->assertTrue ($ sessionMessageStoreDefinition ->hasTag ('ai.message_store ' ));
30813081 }
30823082
3083+ public function testSurrealDbMessageStoreIsConfiguredWithoutCustomTable ()
3084+ {
3085+ $ container = $ this ->buildContainer ([
3086+ 'ai ' => [
3087+ 'message_store ' => [
3088+ 'surreal_db ' => [
3089+ 'custom ' => [
3090+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3091+ 'username ' => 'test ' ,
3092+ 'password ' => 'test ' ,
3093+ 'namespace ' => 'foo ' ,
3094+ 'database ' => 'bar ' ,
3095+ ],
3096+ ],
3097+ ],
3098+ ],
3099+ ]);
3100+
3101+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3102+
3103+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3104+ $ this ->assertCount (8 , $ surrealDbMessageStoreDefinition ->getArguments ());
3105+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3106+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3107+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3108+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3109+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3110+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3111+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3112+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3113+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3114+ $ this ->assertSame ('custom ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3115+
3116+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3117+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3118+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3119+ }
3120+
3121+ public function testSurrealDbMessageStoreIsConfiguredWithCustomTable ()
3122+ {
3123+ $ container = $ this ->buildContainer ([
3124+ 'ai ' => [
3125+ 'message_store ' => [
3126+ 'surreal_db ' => [
3127+ 'custom ' => [
3128+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3129+ 'username ' => 'test ' ,
3130+ 'password ' => 'test ' ,
3131+ 'namespace ' => 'foo ' ,
3132+ 'database ' => 'bar ' ,
3133+ 'table ' => 'random ' ,
3134+ ],
3135+ ],
3136+ ],
3137+ ],
3138+ ]);
3139+
3140+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3141+
3142+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3143+ $ this ->assertCount (8 , $ surrealDbMessageStoreDefinition ->getArguments ());
3144+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3145+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3146+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3147+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3148+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3149+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3150+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3151+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3152+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3153+ $ this ->assertSame ('random ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3154+
3155+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3156+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3157+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3158+ }
3159+
3160+ public function testSurrealDbMessageStoreIsConfiguredWithNamespacedUser ()
3161+ {
3162+ $ container = $ this ->buildContainer ([
3163+ 'ai ' => [
3164+ 'message_store ' => [
3165+ 'surreal_db ' => [
3166+ 'custom ' => [
3167+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3168+ 'username ' => 'test ' ,
3169+ 'password ' => 'test ' ,
3170+ 'namespace ' => 'foo ' ,
3171+ 'database ' => 'bar ' ,
3172+ 'namespaced_user ' => true ,
3173+ ],
3174+ ],
3175+ ],
3176+ ],
3177+ ]);
3178+
3179+ $ surrealDbMessageStoreDefinition = $ container ->getDefinition ('ai.message_store.surreal_db.custom ' );
3180+
3181+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->isLazy ());
3182+ $ this ->assertCount (9 , $ surrealDbMessageStoreDefinition ->getArguments ());
3183+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3184+ $ this ->assertSame ('http_client ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (0 ));
3185+ $ this ->assertSame ('http://127.0.0.1:8000 ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (1 ));
3186+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (2 ));
3187+ $ this ->assertSame ('test ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (3 ));
3188+ $ this ->assertSame ('foo ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (4 ));
3189+ $ this ->assertSame ('bar ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (5 ));
3190+ $ this ->assertInstanceOf (Reference::class, $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3191+ $ this ->assertSame ('serializer ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (6 ));
3192+ $ this ->assertSame ('custom ' , (string ) $ surrealDbMessageStoreDefinition ->getArgument (7 ));
3193+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->getArgument (8 ));
3194+
3195+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('proxy ' ));
3196+ $ this ->assertSame ([['interface ' => MessageStoreInterface::class]], $ surrealDbMessageStoreDefinition ->getTag ('proxy ' ));
3197+ $ this ->assertTrue ($ surrealDbMessageStoreDefinition ->hasTag ('ai.message_store ' ));
3198+ }
3199+
30833200 private function buildContainer (array $ configuration ): ContainerBuilder
30843201 {
30853202 $ container = new ContainerBuilder ();
@@ -3440,6 +3557,25 @@ private function getFullConfig(): array
34403557 'identifier ' => 'session ' ,
34413558 ],
34423559 ],
3560+ 'surreal_db ' => [
3561+ 'my_surreal_db_message_store ' => [
3562+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3563+ 'username ' => 'test ' ,
3564+ 'password ' => 'test ' ,
3565+ 'namespace ' => 'foo ' ,
3566+ 'database ' => 'bar ' ,
3567+ 'namespaced_user ' => true ,
3568+ ],
3569+ 'my_surreal_db_message_store_with_custom_table ' => [
3570+ 'endpoint ' => 'http://127.0.0.1:8000 ' ,
3571+ 'username ' => 'test ' ,
3572+ 'password ' => 'test ' ,
3573+ 'namespace ' => 'foo ' ,
3574+ 'database ' => 'bar ' ,
3575+ 'table ' => 'bar ' ,
3576+ 'namespaced_user ' => true ,
3577+ ],
3578+ ],
34433579 ],
34443580 'chat ' => [
34453581 'main ' => [
0 commit comments