Skip to content

Commit 87e48ee

Browse files
feat(store): Integrate supabase into the store package
- Adds bundle integration - Adds an entry into the stores factory for supabase
1 parent fcb0f01 commit 87e48ee

File tree

4 files changed

+68
-0
lines changed

4 files changed

+68
-0
lines changed

examples/commands/stores.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
use Symfony\AI\Store\Bridge\Neo4j\Store as Neo4jStore;
2525
use Symfony\AI\Store\Bridge\Postgres\Store as PostgresStore;
2626
use Symfony\AI\Store\Bridge\Qdrant\Store as QdrantStore;
27+
use Symfony\AI\Store\Bridge\Supabase\Store as SupabaseStore;
2728
use Symfony\AI\Store\Bridge\SurrealDb\Store as SurrealDbStore;
2829
use Symfony\AI\Store\Bridge\Typesense\Store as TypesenseStore;
2930
use Symfony\AI\Store\Bridge\Weaviate\Store as WeaviateStore;
@@ -88,6 +89,15 @@
8889
env('QDRANT_SERVICE_API_KEY'),
8990
'symfony',
9091
),
92+
'supabase' => static fn (): SupabaseStore => new SupabaseStore(
93+
http_client(),
94+
env('SUPABASE_URL'),
95+
env('SUPABASE_API_KEY'),
96+
env('SUPABASE_TABLE'),
97+
env('SUPABASE_VECTOR_FIELD'),
98+
env('SUPABASE_VECTOR_DIMENSION'),
99+
env('SUPABASE_MATCH_FUNCTION'),
100+
),
91101
'surrealdb' => static fn (): SurrealDbStore => new SurrealDbStore(
92102
httpClient: http_client(),
93103
endpointUrl: env('SURREALDB_HOST'),

src/ai-bundle/config/options.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,19 @@
487487
->end()
488488
->end()
489489
->end()
490+
->arrayNode('supabase')
491+
->useAttributeAsKey('name')
492+
->arrayPrototype()
493+
->children()
494+
->scalarNode('url')->isRequired()->cannotBeEmpty()->end()
495+
->scalarNode('api_key')->isRequired()->cannotBeEmpty()->end()
496+
->scalarNode('table')->isRequired()->cannotBeEmpty()->end()
497+
->scalarNode('vector_field')->end()
498+
->integerNode('vector_dimension')->end()
499+
->scalarNode('function_name')->end()
500+
->end()
501+
->end()
502+
->end()
490503
->arrayNode('typesense')
491504
->useAttributeAsKey('name')
492505
->arrayPrototype()

src/ai-bundle/src/AiBundle.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
use Symfony\AI\Store\Bridge\Neo4j\Store as Neo4jStore;
6767
use Symfony\AI\Store\Bridge\Pinecone\Store as PineconeStore;
6868
use Symfony\AI\Store\Bridge\Qdrant\Store as QdrantStore;
69+
use Symfony\AI\Store\Bridge\Supabase\Store as SupabaseStore;
6970
use Symfony\AI\Store\Bridge\SurrealDb\Store as SurrealDbStore;
7071
use Symfony\AI\Store\Bridge\Typesense\Store as TypesenseStore;
7172
use Symfony\AI\Store\Bridge\Weaviate\Store as WeaviateStore;
@@ -1095,6 +1096,40 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
10951096
$container->setDefinition('ai.store.'.$type.'.'.$name, $definition);
10961097
}
10971098
}
1099+
1100+
if ('supabase' === $type) {
1101+
foreach ($stores as $name => $store) {
1102+
$arguments = [
1103+
new Reference('http_client'),
1104+
$store['url'],
1105+
$store['api_key'],
1106+
];
1107+
1108+
if (\array_key_exists('table', $store)) {
1109+
$arguments[3] = $store['table'];
1110+
}
1111+
1112+
if (\array_key_exists('vector_field', $store)) {
1113+
$arguments[4] = $store['vector_field'];
1114+
}
1115+
1116+
if (\array_key_exists('vector_dimension', $store)) {
1117+
$arguments[5] = $store['vector_dimension'];
1118+
}
1119+
1120+
if (\array_key_exists('function_name', $store)) {
1121+
$arguments[6] = $store['function_name'];
1122+
}
1123+
1124+
$definition = new Definition(SupabaseStore::class);
1125+
$definition
1126+
->addTag('ai.store')
1127+
->setArguments($arguments);
1128+
1129+
$container->setDefinition('ai.store.supabase.'.$name, $definition);
1130+
$container->registerAliasForArgument('ai.store.'.$name, StoreInterface::class, (new Target($name.'Store'))->getParsedName());
1131+
}
1132+
}
10981133
}
10991134

11001135
/**

src/ai-bundle/tests/DependencyInjection/AiBundleTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2181,6 +2181,16 @@ private function getFullConfig(): array
21812181
'namespaced_user' => true,
21822182
],
21832183
],
2184+
'supabase' => [
2185+
'my_supabase_store' => [
2186+
'url' => 'https://test.supabase.co',
2187+
'api_key' => 'supabase_test_key',
2188+
'table' => 'my_supabase_table',
2189+
'vector_field' => 'my_embedding',
2190+
'vector_dimension' => 1024,
2191+
'function_name' => 'my_match_function',
2192+
],
2193+
],
21842194
'typesense' => [
21852195
'my_typesense_store' => [
21862196
'endpoint' => 'http://localhost:8108',

0 commit comments

Comments
 (0)