1use std::collections::HashMap;
4
5use crate::error::GraphmindResult;
6use crate::models::{QueryResult, ServerStatus};
7use async_trait::async_trait;
8
9#[async_trait]
15pub trait GraphmindClient: Send + Sync {
16 async fn query(&self, graph: &str, cypher: &str) -> GraphmindResult<QueryResult>;
18
19 async fn query_with_params(
21 &self,
22 graph: &str,
23 cypher: &str,
24 params: HashMap<String, serde_json::Value>,
25 ) -> GraphmindResult<QueryResult>;
26
27 async fn query_readonly(&self, graph: &str, cypher: &str) -> GraphmindResult<QueryResult>;
29
30 async fn delete_graph(&self, graph: &str) -> GraphmindResult<()>;
32
33 async fn list_graphs(&self) -> GraphmindResult<Vec<String>>;
35
36 async fn status(&self, graph: &str) -> GraphmindResult<ServerStatus>;
38
39 async fn ping(&self) -> GraphmindResult<String>;
41
42 async fn schema(&self, graph: &str) -> GraphmindResult<String>;
44
45 async fn explain(&self, graph: &str, cypher: &str) -> GraphmindResult<QueryResult>;
47
48 async fn profile(&self, graph: &str, cypher: &str) -> GraphmindResult<QueryResult>;
50}