vectorizer_sdk/client/
graph.rs1use super::VectorizerClient;
8use crate::error::{Result, VectorizerError};
9use crate::models::*;
10
11impl VectorizerClient {
12 pub async fn list_graph_nodes(&self, collection: &str) -> Result<ListNodesResponse> {
14 let url = format!("/graph/nodes/{collection}");
15 let response = self.make_request("GET", &url, None).await?;
16 serde_json::from_str(&response).map_err(|e| {
17 VectorizerError::server(format!("Failed to parse list nodes response: {e}"))
18 })
19 }
20
21 pub async fn get_graph_neighbors(
23 &self,
24 collection: &str,
25 node_id: &str,
26 ) -> Result<GetNeighborsResponse> {
27 let url = format!("/graph/nodes/{collection}/{node_id}/neighbors");
28 let response = self.make_request("GET", &url, None).await?;
29 serde_json::from_str(&response).map_err(|e| {
30 VectorizerError::server(format!("Failed to parse neighbors response: {e}"))
31 })
32 }
33
34 pub async fn find_related_nodes(
36 &self,
37 collection: &str,
38 node_id: &str,
39 request: FindRelatedRequest,
40 ) -> Result<FindRelatedResponse> {
41 let url = format!("/graph/nodes/{collection}/{node_id}/related");
42 let payload = serde_json::to_value(&request).map_err(|e| {
43 VectorizerError::validation(format!("Failed to serialize request: {e}"))
44 })?;
45 let response = self.make_request("POST", &url, Some(payload)).await?;
46 serde_json::from_str(&response).map_err(|e| {
47 VectorizerError::server(format!("Failed to parse related nodes response: {e}"))
48 })
49 }
50
51 pub async fn find_graph_path(&self, request: FindPathRequest) -> Result<FindPathResponse> {
53 let payload = serde_json::to_value(&request).map_err(|e| {
54 VectorizerError::validation(format!("Failed to serialize request: {e}"))
55 })?;
56 let response = self
57 .make_request("POST", "/graph/path", Some(payload))
58 .await?;
59 serde_json::from_str(&response)
60 .map_err(|e| VectorizerError::server(format!("Failed to parse path response: {e}")))
61 }
62
63 pub async fn create_graph_edge(
65 &self,
66 request: CreateEdgeRequest,
67 ) -> Result<CreateEdgeResponse> {
68 let payload = serde_json::to_value(&request).map_err(|e| {
69 VectorizerError::validation(format!("Failed to serialize request: {e}"))
70 })?;
71 let response = self
72 .make_request("POST", "/graph/edges", Some(payload))
73 .await?;
74 serde_json::from_str(&response).map_err(|e| {
75 VectorizerError::server(format!("Failed to parse create edge response: {e}"))
76 })
77 }
78
79 pub async fn delete_graph_edge(&self, edge_id: &str) -> Result<()> {
81 let url = format!("/graph/edges/{edge_id}");
82 self.make_request("DELETE", &url, None).await?;
83 Ok(())
84 }
85
86 pub async fn list_graph_edges(&self, collection: &str) -> Result<ListEdgesResponse> {
88 let url = format!("/graph/collections/{collection}/edges");
89 let response = self.make_request("GET", &url, None).await?;
90 serde_json::from_str(&response).map_err(|e| {
91 VectorizerError::server(format!("Failed to parse list edges response: {e}"))
92 })
93 }
94
95 pub async fn discover_graph_edges(
97 &self,
98 collection: &str,
99 request: DiscoverEdgesRequest,
100 ) -> Result<DiscoverEdgesResponse> {
101 let url = format!("/graph/discover/{collection}");
102 let payload = serde_json::to_value(&request).map_err(|e| {
103 VectorizerError::validation(format!("Failed to serialize request: {e}"))
104 })?;
105 let response = self.make_request("POST", &url, Some(payload)).await?;
106 serde_json::from_str(&response).map_err(|e| {
107 VectorizerError::server(format!("Failed to parse discover edges response: {e}"))
108 })
109 }
110
111 pub async fn discover_graph_edges_for_node(
113 &self,
114 collection: &str,
115 node_id: &str,
116 request: DiscoverEdgesRequest,
117 ) -> Result<DiscoverEdgesResponse> {
118 let url = format!("/graph/discover/{collection}/{node_id}");
119 let payload = serde_json::to_value(&request).map_err(|e| {
120 VectorizerError::validation(format!("Failed to serialize request: {e}"))
121 })?;
122 let response = self.make_request("POST", &url, Some(payload)).await?;
123 serde_json::from_str(&response).map_err(|e| {
124 VectorizerError::server(format!("Failed to parse discover edges response: {e}"))
125 })
126 }
127
128 pub async fn get_graph_discovery_status(
130 &self,
131 collection: &str,
132 ) -> Result<DiscoveryStatusResponse> {
133 let url = format!("/graph/discover/{collection}/status");
134 let response = self.make_request("GET", &url, None).await?;
135 serde_json::from_str(&response).map_err(|e| {
136 VectorizerError::server(format!("Failed to parse discovery status response: {e}"))
137 })
138 }
139}