5
5
use Upstash \Vector \Contracts \TransporterInterface ;
6
6
use Upstash \Vector \IndexInfo ;
7
7
use Upstash \Vector \NamespaceInfo ;
8
+ use Upstash \Vector \Operations \Concerns \AssertsApiResponseErrors ;
8
9
use Upstash \Vector \Transporter \ContentType ;
9
10
use Upstash \Vector \Transporter \Method ;
10
11
use Upstash \Vector \Transporter \TransporterRequest ;
12
+ use Upstash \Vector \Transporter \TransporterResponse ;
11
13
12
14
/**
13
15
* @internal
14
16
*/
15
17
final readonly class GetIndexInfoOperation
16
18
{
19
+ use AssertsApiResponseErrors;
20
+
17
21
public function __construct (private TransporterInterface $ transporter ) {}
18
22
19
23
public function getInfo (): IndexInfo
@@ -26,28 +30,30 @@ public function getInfo(): IndexInfo
26
30
27
31
$ response = $ this ->transporter ->sendRequest ($ request );
28
32
29
- $ data = json_decode ($ response-> data , true );
33
+ $ this -> assertResponse ($ response );
30
34
31
- return $ this ->transformDataToIndexInfo ( $ data [ ' result ' ] );
35
+ return $ this ->transformResponse ( $ response );
32
36
}
33
37
34
- private function transformDataToIndexInfo ( array $ data ): IndexInfo
38
+ private function transformResponse ( TransporterResponse $ response ): IndexInfo
35
39
{
36
- $ namespaces = [];
40
+ $ data = json_decode ($ response ->data , true );
41
+ $ result = $ data ['result ' ] ?? [];
37
42
38
- foreach ($ data ['namespaces ' ] as $ namespace => $ namespaceData ) {
43
+ $ namespaces = [];
44
+ foreach ($ result ['namespaces ' ] as $ namespace => $ namespaceData ) {
39
45
$ namespaces [$ namespace ] = new NamespaceInfo (
40
46
vectorCount: $ namespaceData ['vectorCount ' ],
41
47
pendingVectorCount: $ namespaceData ['pendingVectorCount ' ],
42
48
);
43
49
}
44
50
45
51
return new IndexInfo (
46
- vectorCount: $ data ['vectorCount ' ],
47
- pendingVectorCount: $ data ['pendingVectorCount ' ],
48
- indexSize: $ data ['indexSize ' ],
49
- dimension: $ data ['dimension ' ],
50
- similarityFunction: $ data ['similarityFunction ' ],
52
+ vectorCount: $ result ['vectorCount ' ],
53
+ pendingVectorCount: $ result ['pendingVectorCount ' ],
54
+ indexSize: $ result ['indexSize ' ],
55
+ dimension: $ result ['dimension ' ],
56
+ similarityFunction: $ result ['similarityFunction ' ],
51
57
namespaces: $ namespaces ,
52
58
);
53
59
}
0 commit comments