55use PHPUnit \Framework \TestCase ;
66use Upstash \Vector \Tests \Concerns \UsesDenseIndex ;
77use Upstash \Vector \Tests \Concerns \WaitsForIndex ;
8+ use Upstash \Vector \VectorDeleteByMetadataFilter ;
9+ use Upstash \Vector \VectorDeleteByPrefix ;
810use Upstash \Vector \VectorQuery ;
911use Upstash \Vector \VectorUpsert ;
1012
@@ -18,9 +20,9 @@ class DeleteVectorsOperationTest extends TestCase
1820 public function test_delete_vectors (): void
1921 {
2022 $ this ->namespace ->upsertMany ([
21- new VectorUpsert ('id-1 ' , createRandomVector (2 )),
22- new VectorUpsert ('id-2 ' , createRandomVector (2 )),
23- new VectorUpsert ('id-3 ' , createRandomVector (2 )),
23+ new VectorUpsert ('id-1 ' , vector: createRandomVector (2 )),
24+ new VectorUpsert ('id-2 ' , vector: createRandomVector (2 )),
25+ new VectorUpsert ('id-3 ' , vector: createRandomVector (2 )),
2426 ]);
2527 $ this ->waitForIndex ($ this ->namespace );
2628
@@ -34,13 +36,29 @@ public function test_delete_vectors(): void
3436 $ this ->assertSame (1 , $ info ->vectorCount );
3537 }
3638
39+ public function test_delete_single_vector (): void
40+ {
41+ $ this ->namespace ->upsertMany ([
42+ new VectorUpsert ('id-1 ' , vector: createRandomVector (2 )),
43+ new VectorUpsert ('id-2 ' , vector: createRandomVector (2 )),
44+ new VectorUpsert ('id-3 ' , vector: createRandomVector (2 )),
45+ ]);
46+ $ this ->waitForIndex ($ this ->namespace );
47+
48+ $ result = $ this ->namespace ->delete ('id-1 ' );
49+
50+ $ this ->assertEquals (1 , $ result ->deleted );
51+ $ info = $ this ->namespace ->getNamespaceInfo ();
52+ $ this ->assertSame (2 , $ info ->vectorCount );
53+ }
54+
3755 public function test_delete_vectors_from_a_query_result_results (): void
3856 {
3957 $ vector = createRandomVector (2 );
4058 $ this ->namespace ->upsertMany ([
4159 new VectorUpsert ('id-1 ' , $ vector ),
42- new VectorUpsert ('id-2 ' , createRandomVector (2 )),
43- new VectorUpsert ('id-3 ' , createRandomVector (2 )),
60+ new VectorUpsert ('id-2 ' , vector: createRandomVector (2 )),
61+ new VectorUpsert ('id-3 ' , vector: createRandomVector (2 )),
4462 ]);
4563 $ this ->waitForIndex ($ this ->namespace );
4664
@@ -53,4 +71,56 @@ public function test_delete_vectors_from_a_query_result_results(): void
5371
5472 $ this ->assertEquals (2 , $ result ->deleted );
5573 }
74+
75+ public function test_delete_vectors_using_an_id_prefix (): void
76+ {
77+ $ this ->namespace ->upsertMany ([
78+ new VectorUpsert ('users:1 ' , vector: createRandomVector (2 )),
79+ new VectorUpsert ('users:2 ' , vector: createRandomVector (2 )),
80+ new VectorUpsert ('posts:1 ' , vector: createRandomVector (2 )),
81+ ]);
82+ $ this ->waitForIndex ($ this ->namespace );
83+
84+ $ result = $ this ->namespace ->delete (new VectorDeleteByPrefix (
85+ prefix: 'users: ' ,
86+ ));
87+
88+ $ this ->assertEquals (2 , $ result ->deleted );
89+ $ this ->assertEquals (1 , $ this ->namespace ->getNamespaceInfo ()->vectorCount );
90+ }
91+
92+ public function test_delete_vectors_using_a_metadata_filter (): void
93+ {
94+ $ this ->namespace ->upsertMany ([
95+ new VectorUpsert (
96+ id: 'users:1 ' ,
97+ vector: createRandomVector (2 ),
98+ metadata: [
99+ 'salary ' => 1000 ,
100+ ],
101+ ),
102+ new VectorUpsert (
103+ id: 'users:2 ' ,
104+ vector: createRandomVector (2 ),
105+ metadata: [
106+ 'salary ' => 2000 ,
107+ ],
108+ ),
109+ new VectorUpsert (
110+ id: 'users:3 ' ,
111+ vector: createRandomVector (2 ),
112+ metadata: [
113+ 'salary ' => 3000 ,
114+ ],
115+ ),
116+ ]);
117+ $ this ->waitForIndex ($ this ->namespace );
118+
119+ $ result = $ this ->namespace ->delete (new VectorDeleteByMetadataFilter (
120+ filter: 'salary > 1000 ' ,
121+ ));
122+
123+ $ this ->assertEquals (2 , $ result ->deleted );
124+ $ this ->assertEquals (1 , $ this ->namespace ->getNamespaceInfo ()->vectorCount );
125+ }
56126}
0 commit comments