5
5
use PHPUnit \Framework \TestCase ;
6
6
use Upstash \Vector \Tests \Concerns \UsesDenseIndex ;
7
7
use Upstash \Vector \Tests \Concerns \WaitsForIndex ;
8
+ use Upstash \Vector \VectorDeleteByMetadataFilter ;
9
+ use Upstash \Vector \VectorDeleteByPrefix ;
8
10
use Upstash \Vector \VectorQuery ;
9
11
use Upstash \Vector \VectorUpsert ;
10
12
@@ -18,9 +20,9 @@ class DeleteVectorsOperationTest extends TestCase
18
20
public function test_delete_vectors (): void
19
21
{
20
22
$ 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 )),
24
26
]);
25
27
$ this ->waitForIndex ($ this ->namespace );
26
28
@@ -34,13 +36,29 @@ public function test_delete_vectors(): void
34
36
$ this ->assertSame (1 , $ info ->vectorCount );
35
37
}
36
38
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
+
37
55
public function test_delete_vectors_from_a_query_result_results (): void
38
56
{
39
57
$ vector = createRandomVector (2 );
40
58
$ this ->namespace ->upsertMany ([
41
59
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 )),
44
62
]);
45
63
$ this ->waitForIndex ($ this ->namespace );
46
64
@@ -53,4 +71,56 @@ public function test_delete_vectors_from_a_query_result_results(): void
53
71
54
72
$ this ->assertEquals (2 , $ result ->deleted );
55
73
}
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
+ }
56
126
}
0 commit comments