gossan_graph/store/
mod.rs1pub mod graphml;
4pub mod json;
5pub mod memory;
6pub mod sqlite;
7
8use crate::{schema::EdgeType, Edge, Node};
9
10pub trait GraphBackend {
12 type Error: std::error::Error + Send + Sync + 'static;
14
15 fn init(&mut self) -> Result<(), Self::Error>;
17
18 fn write_nodes(&mut self, nodes: &[Node]) -> Result<(), Self::Error>;
20
21 fn write_edges(&mut self, edges: &[Edge]) -> Result<(), Self::Error>;
23
24 fn read_nodes(&self) -> Result<Vec<Node>, Self::Error>;
26
27 fn read_edges(&self) -> Result<Vec<Edge>, Self::Error>;
29
30 fn find_nodes_by_type(&self, kind: crate::schema::NodeType) -> Result<Vec<Node>, Self::Error>;
32
33 fn neighbors(
35 &self,
36 node_id: &str,
37 edge_type: Option<EdgeType>,
38 ) -> Result<Vec<Edge>, Self::Error>;
39
40 fn clear(&mut self) -> Result<(), Self::Error>;
42}